我在Laravel中定义了一对多的关系:
TheModules
有多个TheModulesActions
,TheModulesActions
有一个TheModules
。
效果很好,但我想在名为TheModulesActions
的{{1}}内设置自定义属性。
要实现这一点,我需要以下代码:
url
直到现在一切正常,但 protected $appends = array('url');
public function getUrlAttribute() {
$nameURL = SharedMethods::slugify($this->title);
$url = "#/control/{$module}/{$nameURL}/{$this->id}";
return $url;
}
变量为空,我只有$module
与$this->moduleID
相关联。
我需要TheModules
,但它在我的$this->TheModules()->title
方法中无效。
有没有办法在getUrlAttribute
内访问关系数据?
getAttribute
课程中的关系是:
TheModulesActions
public function TheModule() {
return $this->belongsTo('App\TheModules');
}
课程中的关系是:
TheModules
尝试 public function TheActions() {
return $this->hasMany('App\TheModulesActions', 'moduleID');
}
:
给我这个错误:
TheModulesActions.php第15行中的ErrorException: 试图获得非对象的属性
答案 0 :(得分:1)
您可以通过将关系名称上的括号()
删除为:
$this->TheModules->title
当您使用带有关系名称的括号时,Laravel将返回查询构建器的实例。