我对 Laravel 的 ORM 有一个乏味的问题。
我有一个具有多种关系的模型,如下所示:
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 假定它是一对一的关系,并在内部调用 first() 方法。
但是当我对 updateUser 进行同样的尝试时,它失败了,返回一个错误,说它不能在非对象上调用 name。
但如果我试试这个:
$this->updateUser()->first()->name;
它有效,但对我来说感觉不对。
所以我的问题是,Laravel 的 ORM 如何决定用 belongsTo() 定义的关系是一对一还是一对多?有没有办法强制执行所需的行为?
谢谢