我有存储基本用户信息,例如用户名,密码等的用户模型Laravel嵌套关系不工作
也有3种类型的用户,Student
,Staff
和Parent
。每种类型也有一个单独的模型。例如,有一种Student
模型属于一个User
模型。
我也有一个关系表,存储学生和家长之间的关系。这种关系存储在用户模型中。
如果我做这样的事情:
App\Student::first()->user->relations;
它兴高采烈地返回相关家长的集合。
在我的Students
模型中,我有一个名为hasParent()
的方法,它接受给定的用户ID,并检查以确保学生有一个具有该ID的父亲。在该方法中,我有以下几点:
public function hasParent($parent)
{
return $this->user->relations->where('id', $parent)->count() === 1;
}
然而,这将返回一个错误Cannot call 'where' on a non-object
。如果我进一步调试,$this->user->relations
返回一个空数组。
的问题是,像上面,如果我单独调用的方法,我得到了我想要的结果。
所以要澄清,我办:
App\Student::first()->user->relations;
这将返回用户蛮好的集合。
在我Student
模型然而,如果我叫:
$this->user
然后我得到正确的学生
如果我打电话
$this->user->relations
我得到一个空数组。这是没有道理的!任何人都可以阐明这一点,或者我可能做错了什么?如果您需要更多信息,请告诉我。
你能解释更多关于关系吗? – whyguy
为什么不使用与coresponding值的学生,工作人员,家长和与用户模型涉及它用于此目的的榜样?它会不会简化你的结构? – geoandri