getAttribute中的关系数据

时间:2017-01-22 13:51:06

标签: php laravel eloquent

我在Laravel中定义了一对多的关系:

TheModules有多个TheModulesActionsTheModulesActions有一个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: 试图获得非对象的属性

1 个答案:

答案 0 :(得分:1)

您可以通过将关系名称上的括号()删除为:

$this->TheModules->title

当您使用带有关系名称的括号时,Laravel将返回查询构建器的实例。