Я использую это Медиа библиотека для Laravel.
Допустим, у меня есть класс Pivot в Laravel 5.5, который является промежуточной таблицей, которая соединяет две другие таблицы в отношении многие ко многим.
Я реализовал класс следующим образом:
class UserTask extends Pivot implements HasMedia
{
use HasMediaTrait;
public function getCompletedAttribute($value)
{
dd($this->getMedia());
}
public function task()
{
return $this->belongsTo(Task::class);
}
}
Это возвращает пустую коллекцию, несмотря на то, что у меня есть 2 медиа записи, назначенные этой модели в базе данных.
Я думаю, что проблема в том, что этот класс не расширяется Model
но вместо этого расширяет Pivot
, простирающийся Pivot
необходимо из-за природы отношения многих ко многим.
Кто-нибудь знает, почему это происходит?
РЕДАКТИРОВАТЬ
Если я сделаю это:
dd(UserTask::find(1)->getMedia());
это показывает объекты мультимедиа прекрасно.
Однако, если я попытаюсь извлечь медиа, используя отношения в построителе запросов:
$sections = $this->model->with('subsections.tasks.users')->get();
Он не возвращает медиа-объекты как часть json:
"tasks": [
{
"id": 1,
"name": "Create a policy",
"description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc nisl nibh, iaculis nec posuere sit amet, fermentum sed orci. Aliquam dignissim, elit at malesuada imperdiet, est leo ullamcorper urna, nec hendrerit lorem lacus vel quam. Fusce mauris massa, pharetra id nisl non, vestibulum tempus est. Curabitur vitae metus non massa volutpat semper ac a ligula. Nunc feugiat pulvinar tortor, viverra hendrerit metus lacinia ut. Etiam efficitur in arcu ut bibendum. Etiam non diam ac odio auctor faucibus sit amet ac metus.",
"question": "Have you created a training policy?",
"yes_description": "Upload policy to secure, off-site storage",
"no_description": "Download template",
"high_urgency": 1,
"document_upload_required": 1,
"active": 1,
"created_at": "2018-02-26 09:40:39",
"updated_at": "2018-02-26 09:56:33",
"pivot": {
"section_id": 3,
"task_id": 1
},
"users": [
{
"id": 1,
"name": "Admin",
"email": "[email protected]",
"company_id": null,
"is_active": 1,
"created_at": "26-02-2018 09:31:15",
"updated_at": "2018-02-26 09:31:15",
"stripe_id": null,
"card_brand": null,
"card_last_four": null,
"trial_ends_at": null,
"pivot": {
"task_id": 1,
"user_id": 1,
"completed": false,
"task": {
"id": 1,
"name": "Create a policy",
"description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc nisl nibh, iaculis nec posuere sit amet, fermentum sed orci. Aliquam dignissim, elit at malesuada imperdiet, est leo ullamcorper urna, nec hendrerit lorem lacus vel quam. Fusce mauris massa, pharetra id nisl non, vestibulum tempus est. Curabitur vitae metus non massa volutpat semper ac a ligula. Nunc feugiat pulvinar tortor, viverra hendrerit metus lacinia ut. Etiam efficitur in arcu ut bibendum. Etiam non diam ac odio auctor faucibus sit amet ac metus.",
"question": "Have you created a training policy?",
"yes_description": "Upload policy to secure, off-site storage",
"no_description": "Download template",
"high_urgency": 1,
"document_upload_required": 1,
"active": 1,
"created_at": "2018-02-26 09:40:39",
"updated_at": "2018-02-26 09:56:33"},
"media": []
}
}
]
},
]
Задача ещё не решена.
Других решений пока нет …