在新的Laravel资源类中,您可以根据自己喜欢的任何内容删除属性。
如果您想返回许多项目,您可以使用该功能
Resource::collection()
但这不允许您在一个位置添加元数据。输入一个集合,太好了,这是一个很好的格式,能够添加元数据的许多项目。但是,您不能做的是筛选集合,您必须像使用资源一样隐藏属性。我能看到的唯一办法就是
foreach ($this->collection as $item) {
if ($notAdmin) {
$temp = array_except($item->toArray(), ['secret']);
}
$temp['links'] = ['self' => route('restaurant.show', [$item])];
$data[] = $temp;
}
我是不是错过了什么?对于资源收集来说,这似乎是一个被忽视的巨大能力
好的,下面是您的操作方法:
>
为集合创建一个RCollection
,您可以在其中添加元数据。
将Resource::collection(Model::all)
传递到new RCollection()
中。
类似这样的内容(从我的测试中):
Route::get('users/all', function() {
return new \App\Http\Resources\Users(
\App\Http\Resources\UserResource::collection(\App\User::get())
);
});
工作起来很有魅力!
基于此线程,当使用ResourceCollection类自定义集合(例如BookCollection
)时,Laravel似乎会查找一个名为相同但没有集合sufix类的资源类(在示例中,一个名为仅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,
];
}
}
<?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',
],
];
}
}
问题内容: 我有这样的实体: 还有一个: 使用Criteria API,我想通过过滤的Picturs获得唯一的AlbumD。我尝试这样的事情: 在这里,我得到了带有所有关联图片的相册。它们根本没有被过滤。当我尝试执行由记录器打印的查询时,只有给定eventId的图片数量只有四行,但是在“相册”中,我获取了所有图片。 我也尝试了其他ResultTransformers,但最终得到了很多结果(4),但
我正在运行一个简单的maven项目(Maven3.3.9),其中包含配置文件和资源筛选。似乎总是在默认配置文件上进行筛选。 src/main/filters(默认)中有两个配置文件:config-dev.properties和config-prod.properties(仅包含一个变量application.env=development application.env=production 和s
我有一个SpringBoot项目(maven/java8)。 我想通过Maven配置文件(dev.properties|prod.properties)过滤src/main/Resources/application.properties中的一些自定义变量 Maven命令: 应用属性: 开发属性: prod.properties: pom.xml:
22.7.1.Source Set 属性 下表列出了 Source Set 的一些重要属性, 更多细节请查看 SourceSet 的 API 文档. 表22.9.java 插件- Source Set 属性 配置名称 类型 默认值 描述 name String (read-only) Not null 用来识别source set的名称 output SourceSetOutput(read-on
我有以下问题:我正在学习如何使用MongoDb和C#。可以在集合中插入项,但无法筛选现有集合以检索一个或多个符合查询条件的项。下面是我的类结构: 下面是我保存对象的方法: 并且正确保存了对象,正如您在图像中所看到的: 但是如何检索包含id为1234的对象事务的文档呢? 我使用的是.NET Core2和MongoDb C#驱动程序版本2.5。 编辑:集合是BsonDocument集合,它不是Tran
我有这个pom结构,我正在尝试访问属性。我无法通过另一个属性中心的资源筛选访问此内容。端口,在属性部分中定义 在中,我有属性文件,它有这个 我就像这样进入财产 但它会打印 <代码>轮毂${集线器端口} 我提到了这个问题,但我无法访问该物业。