【发布时间】:2017-01-04 09:47:17
【问题描述】:
我有这样的数据库表:
shoot: id, name, programme
programme: id, name
拍摄中的雄辩关系是这样定义的:
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
但是,当我急切加载拍摄并尝试获取程序对象时,我改为检索拍摄属性“程序”。例如:
$shoot = Shoot:where('id','=',1)->with('programme')->first();
echo $shoot->programme; // returns 1, not App\Programme object.
是否有无需重写大量代码库的解决方案?
【问题讨论】:
-
这是因为您的关系与您的属性之一具有相同的名称。它会返回您的属性。
-
坚持命名约定
programme-programme_id你应该很高兴......什么是程序?编码时使用英语。 (谷歌将其标记为拼写错误) -
It is "proper English" ;) - 程序的英式英语拼写,例如一个电视节目。英式英语中的 Program 明确指的是软件程序。
标签: php laravel eloquent laravel-5.2