我有以下模式设置:Laravel belongsToMany没有返回结果
用户:
- ID
部门:
- ID
department_user:
- ID
- 部门标识
- USER_ID
我也有以下关系成立:
用户模型
public function departments()
{
return $this->belongsToMany('App\Resources\Eloquent\Models\Department', 'department_users');
}
系车型
public function users()
{
return $this->belongsToMany(User::class, 'department_users');
}
出于某种原因,当我试图通过用户模型$user->departments
访问,这是行不通的 - 但$department->users
一样。
输出雄辩查询如下:
select `departments`.*, `department_users`.`user_id` as `pivot_user_id`, `department_users`.`department_id` as `pivot_department_id` from `departments` inner join `department_users` on `departments`.`id` = `department_users`.`department_id` where `department_users`.`user_id` is null
我似乎无法找出它为什么是想看看是否department_users.user_id
为空,当它应该寻找用户的ID。
任何想法?
你是如何想出了'$ user'变量?用户还没有保存,我相信这个ID将是空的。 – user3158900
为什么你定义返回$ this-> belongsToMany(User :: class,'department_users'); - 删除第二个arg'department_users',并在用户模型中删除第二个参数。它的可选表名,我在这个定义中看到拼写错误“department_users”,而你的模式在顶部“department_user” - 缺少最后一个“s” – Adiasz
'$ user'变量已经分配给从数据库中提取的模型。 I.E:'$ user = User :: find(1)' –