如何在laravel中检索自定义资源中的Spatia媒体集合



我在laravel中使用Spatie媒体包,当我尝试在Spatie集合中显示媒体时,会显示包中的取消替换数据。

控制器:

public function index(IndexTicketRequest $request)
{
$tickets = Ticket::query()->with(['employee','media']);
if ($request->has('status')) {
$tickets->where('status', $request->get('status'));
}
return TicketResource::collection($tickets->orderByDesc('created_at')->paginate($request->per_page ?? 20));
}

资源:

public function toArray($request)
{
return [
'id' => $this->id,
'category' => $this->category,
'fullname' => $this->fullname,
'username' => $this->username,
'file' => $this->file,
'message' => $this->message,
'status' => TicketType::getDescription($this->status),
'employee' => $this->whenLoaded('employee'),
'media' => $this->whenLoaded('media'),
];
}

用集合加载媒体非常简单。您只需要在分页之前添加with函数(例如:with(['media'])(。请按照修改:

public function index(IndexTicketRequest $request)
{
$tickets = Ticket::query()->with(['employee','media']);
if ($request->has('status')) {
$tickets->where('status', $request->get('status'));
}
return TicketResource::collection($tickets->orderByDesc('created_at')->with(['media'])->paginate($request->per_page ?? 20));
}

最新更新