1
我有以下型号:如何使用预先加载相关模型Laravel
- 预约[属于关联时隙| belongsTo User]
- 时间段[hasMany Appointment]
- User [hasOne Appointment | HasOne详情]
- 详细[属于关联用户]
我想急于负荷约会模型开始的详细数据(预约有一个用户,其中有一个详细记录)使用以下查询:
$apps = Appointment::with('timeslot')->with('user')->with('user.details')->get();
这
呼叫引发以下错误在Builder.php成员函数addEagerConstraints()非对象
上
为什么我在这里调用非对象,为什么我的查询不工作?
编辑:
这是我的用户模型的关系:
public function details() {
dd($this->role_id);
switch($this->role_id) {
case 3:
return $this->hasOne('App\CandidateDetails', 'user_id');
break;
case 2:
return $this->hasOne('App\EmployerDetails', 'user_id');
break;
}
}
我知道,这将使用数据透视表可以更好地实现,它是一个学习的过程。 dd()在被我的查询调用时返回null,但它在其他调用中正常工作。这里发生了什么?
嗯,看在我原来的职位编辑 – matthiasdv
不能使用$此有关的定义 - 模型的属性会当查询被建立时,这是不会启动的,所以$ this-> role_id将会返回null,并且不会返回任何关系。 –
那么实现它的最优雅的方法是什么?我有一个在用户表上运行的用户模型。每个记录_either_与候选人或雇主表有关系。 – matthiasdv