Fir*_*nis 3 php laravel laravel-5
在新的 Laravel Resource 类中,您可以根据自己的喜好删除属性。
如果要返回很多项,可以使用该函数
Resource::collection()
Run Code Online (Sandbox Code Playgroud)
但这并不能让您在一处添加元数据。输入一个集合,太好了,这是一个很好的格式的许多项目,能够添加元数据。但是,您不能做的是过滤您必须像使用资源一样隐藏属性的集合。我能看到的唯一方法是
foreach ($this->collection as $item) {
if ($notAdmin) {
$temp = array_except($item->toArray(), ['secret']);
}
$temp['links'] = ['self' => route('restaurant.show', [$item])];
$data[] = $temp;
}
Run Code Online (Sandbox Code Playgroud)
有什么我想念的吗?这似乎是资源集合的一个被忽视的巨大能力
基于此线程,似乎在使用ResourceCollection类自定义集合(例如BookCollection)时,Laravel 查找
名称相同但没有Collection后缀类的Resource类(在示例中,一个名为 just 的类)。Book
因此,您需要有一个名为: 的资源类:Book您可以在其中自定义要返回到响应的属性和一个名为: 的集合类BookCollection,该类将使用Book- 自定义数据 - 并且还可以让您自定义元数据。
<?php
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\Resource;
class Book extends Resource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request
* @return array
*/
public function toArray($request)
{
return [
'id' => $this->id,
'title' => $this->title,
];
}
}
Run Code Online (Sandbox Code Playgroud)
<?php
namespace App\Http\Resources\Users;
use Illuminate\Http\Resources\Json\ResourceCollection;
class BookCollection extends ResourceCollection
{
/**
* Transform the resource collection into an array.
*
* @param \Illuminate\Http\Request
* @return array
*/
public function toArray($request)
{
return $this->collection;
}
public function with($request)
{
return [
'meta' => [
'key' => 'value',
],
];
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4448 次 |
| 最近记录: |