我在與Laravel的ORM一個繁瑣的問題。Laravel:屬於關聯()關係假設一個一對多的關係,而不是一個對一個
我有多重關係的模型,像這樣:
class Pages extends Eloquent {
protected $guarded = array('id','config_id');
public function template()
{
return $this->belongsTo('Templates', 'templates_id');
}
public function updateUser()
{
return $this->belongsTo('Users', 'updated_by');
}
現在我可以訪問該模板相關的項目在一個簡單的方法,就像這樣:
$this->template->name;
和它的作品出來的蝙蝠,因爲Laravel的ORM假定它是一個一對一的關係和內部調用第一()方法。
但是,當我嘗試與updateUser相同時失敗,返回一個錯誤,說它不能在非對象上調用名稱。
但如果我試試這個:
$this->updateUser()->first()->name;
它的工作原理,但並不覺得我的權利。
所以我的問題是,Laravel的ORM如何決定是否有屬於關聯()定義的關係是一對一或一對多?有沒有辦法強制所需的行爲?
謝謝
您使用'hasOne()'在其他地方設置的關係?和你閱讀[文件](http://four.laravel.com/docs/eloquent#one-to-one)? – naththedeveloper
是的,我讀過的文檔。我沒有在其他地方使用hasOne(),因爲單個用戶可能是許多頁面的更新者,從用戶的角度來看,它是一對多的關係,但是從一個頁面到另一個頁面是一對一的關係。 – Ingro