【发布时间】:2018-09-19 12:14:46
【问题描述】:
抱歉(也许)有些不清楚的问题。我不知道如何以其他方式表达它。 (欢迎提出建议:p)但是我认为代码不言自明:
我正在使用访问器来获取页面的主题(如果没有主题集,则从其父级获取):
public function getThemeAttribute()
{
if(!isset($this->theme_uid) || $this->theme_uid === null || $this->theme_uid === '')
{
return $this->parent->theme()->first();
}
//return $this->theme->first();
return self::theme()->first();
}
如果我请求主题属性本身,这确实有效,例如:
$page->theme
返回:
Theme {#741 ▼ ...etcetera
但如果我尝试访问返回模型的属性,例如:
$page->theme->uid
我明白了:
0
可能与幕后发生的事情有关,但还没有弄清楚,所以任何帮助都会很棒。
已经谢谢了!
问候吉斯
【问题讨论】:
-
如果我正确理解了您的代码,它应该以循环结束,因为您使用的是 getThemeAttribute 但也在同一个函数中使用 $this->theme,它们都引用了同一个函数。
-
@Gijs Beijer 我发布了一些想法。另外,为什么你会得到
0的uuid,你能做这个测试吗?dd($theme->getAttributes()); -
我 @milo526 你在哪里复制了试用代码,我实际上使用 self::theme() 来克服这个问题,它确实返回了正确的主题模型实例,但我不能调用任何属性。跨度>
-
@Andrius Rimkus,致电:
->getAttributes()确实向我展示了价值观 -
如果您在原始属性数组中看到
uuid,那么问题可能与uuid访问器有关。
标签: php laravel inheritance eloquent accessor