我的印象是,当我在模型中使用belongsTo关系时,它将返回对象,但我似乎只获得了id。这应该发生吗?这有什么好处?
这是我的代码:
来自我的照片模型
public function album()
{
return $this->belongsTo('Album', 'album');
}
和我的PhotosController
$photo = Photo::find($id);
$album = $photo->album;
return 'albums/' . $album->folder . '/thumbs/' . $photo->file;
不要介意回归,它只是用于测试。我收到一个错误:
Trying to get property of non-object
而var_dump()
显示我得到的只是一张包含相册ID的字符串
答案 0 :(得分:1)
尝试:
return $this->belongsTo('Album', 'album', 'id');
其中'id'是专辑表
上相关列的名称答案 1 :(得分:1)
我遇到了同样的问题。我仍然无法解释会发生什么。如果你转储photo
,我想你会得到专辑的id和关系中的专辑对象。
因此,我以某种方式得到了这样:
$album = $photo->album()->first();
答案 2 :(得分:1)
之所以获得ID,是因为您的外键字段与您的关系具有相同的名称。
因此,当您调用$ photo-> album时,您不是在触摸关联方法(作为动态属性),而是返回相册字段值,而该值恰好是id。
最好是将专辑字段重命名为album_id。
public function album()
{
return $this->belongsTo('Album', 'album_id');
}
或者因为它遵循标准命名,所以您可以避免指定album_id
public function album()
{
return $this->belongsTo('App\Album');
}