php belongsto,php
我在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尝试相同时,它失败,返回错误,并说它无法在非对象上调用名称.
但是,如果我尝试这样做:
$this->updateUser()->first()->name;
它有效,但是对我来说不合适.
所以我的问题是,Laravel的ORM如何确定用belongsTo()定义的关系是一对一还是一对多?有没有办法强迫必要的行为?
谢谢
解决方法:
您需要定义关系.您可以在透视图中定义“不同”关系.
-> belongsTo()函数是一个反函数-但是您尚未在users表上定义任何东西-因此错误地假设反比是一对多.
只需将其添加到您的用户类:
class Users extends Eloquent {
public function pages()
{
return $this->hasMany('Pages');
}
}
标签:laravel,orm,php
来源: .html