我有这样的数据库表:
shoot: id, name, programme
programme: id, name
拍摄中 Eloquent 关系定义如下:
public function programme() {
return $this->belongsTo('App\Programme', 'programme', 'id');
}
使用
dd()
时,我可以看到它正常工作:dd(Shoot:where('id','=',1)->with('programme')->first());
// prints the object with programme listed under the relationship
但是,当我渴望加载拍摄并尝试获取程序对象时,我取而代之的是获取拍摄属性“programme”。例如。:
$shoot = Shoot:where('id','=',1)->with('programme')->first();
echo $shoot->programme; // returns 1, not App\Programme object.
是否有解决方案而不必重写大量代码库?
最佳答案
您不应该对 relationship
和 column
名称使用相同的名称,否则您将始终收到 column
名称,因此请尝试编辑其中之一,我认为这里最简单的是 relationship
名称:
public function programmeObj() {
return $this->belongsTo('App\Programme', 'programme', 'id');
}
然后将其称为:
echo $shoot->programmeObj;
注意: 但是如果你想遵循约定,你应该用
programme_id
替换 name 属性,所以:public function programme() {
return $this->belongsTo('App\Programme', 'programme_id', 'id');
}
希望这可以帮助。
关于php - Laravel通过与其属性相同的名称获得 Eloquent 关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41460707/