Как использовать в модели медиа коллекцию? spatie/laravel-medialibrary
стандартное CRUD app. Есть модели User и Task. Необходимо для пользователя реализовать возможность загрузки медиа в свои таски. Используем spatie/laravel-medialibrary. В Task добавлен трейт для medialibrary, вот сама модель:
class Task extends Model implements HasMedia
{
use InteractsWithMedia;
protected $fillable = [
'id', 'title', 'description', 'user_id', 'checked', 'order', 'created_at', 'updated_at'
];
public function user()
{
return $this->belongsTo('App\Models\User', 'user_id');
}
}
в контроллере реализована загрузка медиа файлов и распределение их на коллекции:
public function uploadFile(Request $request, $id)
{
if($request -> hasFile('file')) {
$task = Task::find($id);
$fileType = $request->file->getClientMimeType();
if(strpos($fileType, 'image') !== false) {
$task->addMedia($request->file('file'))->toMediaCollection('images');
} elseif (strpos($fileType, 'audio') !== false) {
$task->addMedia($request->file('file'))->toMediaCollection('audio');
} elseif (strpos($fileType, 'video') !== false) {
$task->addMedia($request->file('file'))->toMediaCollection('video');
} elseif (strpos($fileType, 'text') !== false) {
$task->addMedia($request->file('file'))->toMediaCollection('text');
}
}
}
Вывод таска пользователя вот такой:
public function show(Task $task)
{
return new TaskResource($task);
}
Сам TaskResource:
return [
'id' => $this->id,
'title' => $this->title,
'description' => $this->description,
'checked' => $this->checked,
'user_id' => $this->user_id,
'order' => $this->order,
'created_at' => $this->created_at->format('Y-m-d H:i:s'),
'updated_at' => $this->updated_at->format('Y-m-d H:i:s')
];
Не понимаю как сделать и добавить в вывод таска кол-ции медиа.