Laravel 8 资源集合
你可以在路由或者控制器中使用 collection
方法来创建资源实例,以返回多个资源的集合或分页响应:
use App\Http\Resources\User as UserResource;
use App\Models\User;
Route::get('/user', function () {
return UserResource::collection(User::all());
});
当然了,使用如上方法你将不能添加任何附加的元数据和集合一起返回。如果你需要自定义资源集合响应,你需要创建一个专用的资源来表示集合:
php artisan make:resource UserCollection
你可以轻松地在已生成的资源集合类中定义任何你想在响应中返回的元数据:
<?php
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\ResourceCollection;
class UserCollection extends ResourceCollection
{
/**
* 将资源集合转换成数组
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function toArray($request)
{
return [
'data' => $this->collection,
'links' => [
'self' => 'link-value',
],
];
}
}
你可以在路由或者控制器中返回已定义的资源集合:
use App\Http\Resources\UserCollection;
use App\Models\User;
Route::get('/users', function () {
return new UserCollection(User::all());
});