admin管理员组文章数量:1026989
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
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
本文标签: php belongstophp
版权声明:本文标题:php belongsto,php 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://it.en369.cn/IT/1688236174a195565.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论