我的印象是,当我在模型中使用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 的字符串
您获得id是因为您的外键字段与您的关系具有相同的名称。
因此,当您调用$photo->album您没有触摸relation方法(作为动态属性),而是返回album字段值,该值恰好是id。
最好将album字段重命名为album_id。
public function album()
{
return $this->belongsTo('Album', 'album_id');
}
或者,由于它遵循标准命名,您可以避免指定album_id
public function album()
{
return $this->belongsTo('App'Album');
}
尝试:
return $this->belongsTo('Album', 'album', 'id');
其中"id"是相簿表上关联列的名称
我也遇到了同样的问题。我仍然无法解释发生了什么。如果你转储photo
,我想你会在关系中得到相册的id和相册对象。
因此,我不知怎么得到了这样的结果:
$album = $photo->album()->first();