php – Laravel Eloquent属于不工作

我不能使belongsTo关系工作(或我使用错误的关系).

我的数据库结构(简化):

网页:

id | title | main_image
-----------------------
1  | Test  | 5

媒体:

id | filepath
-----------------------
5  | uploads/test.jpg

所以我希望能够执行$page-> main_image,它会返回我的Media模型实例,所以我可以使用$page-> main_image-> filepath等.

在Page模型中,我有以下内容:

    public function main_image()
    {
        return $this->belongsTo('App\Modules\Media\Models\Media', 'id', 'main_image');
    }

但是,当我执行$page-> main_image时,我只得到int 5.我在这里使用了错误的关系吗?

谢谢!

最佳答案 访问$page-> main_image时,如果没有相同名称的属性,Eloquent将只尝试查找main_image()关系.但是你已经有了一个名称main_image.因此,您应该重命名attribut(列名称)或关系.我会将列重命名为main_image_id.

要返回的优先级/顺序是:

>公共对象属性(public $main_page)
> GetAccessor($page-> getMainPage())
>表格列/属性($page-> attributes [‘main_page’])
>表格中的属性/列($this-> attributes [‘main_page’])
>加载关系($this-> relations [‘main_page’])
>卸载关系($this-> main_page() – > get())

点赞