Laravel Eloquent属于不工作

时间:2016-08-31 11:05:39

标签: php laravel

我无法使belongsTo关系有效(或者我使用错误的关系)。

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

网页

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

媒体

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

所以我希望能够$page->main_image,它会返回我的媒体模型实例,所以我可以使用$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。我在这里使用了错误的关系吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

访问{{1}时}如果没有相同名称的属性,Eloquent将仅尝试查找$page->main_image关系。但是您已经有一个列名main_image()。因此,您应该重命名attribut(列名称)或关系。我会将列重命名为main_image

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

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