1

我正在为 Laravel 使用这个媒体库

假设我在 Laravel 5.5 中有一个 Pivot 类,它是以多对多关系连接其他两个表的中间表。

我已经实现了这样的类:

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而是扩展PivotPivot由于多对多关系的性质,扩展是必要的。

有谁知道为什么会这样?

编辑

如果我这样做: 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": "admin@example.com",
                                "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": []
                                }
                            }
                        ]
                    },
]
4

0 回答 0