Laravel与数据透视表有很多很多关系

时间:2018-04-13 10:10:25

标签: laravel many-to-many pivot pivot-table

如果我尝试下面这个页面加载无穷无尽:

$user_departments = User::find(1)->departments();

有以下表格: - 用户 - user_department - 部门

数据透视表user_department有两个外键: - department_id - user_id

在我的用户模型中:

public function departments()
{
    return $this->belongsToMany('App\Department', 'user_department', 'user_id', 'department_id')->withTimestamps();
}

在我的部门模型中:

public function users()
{
    return $this->belongsToMany('App\User', 'user_department', 'department_id', 'user_id')->withTimestamps();
}

顺便说一下:以下代码正在运行:

$user->departments()->syncWithoutDetaching($department->id);

但是我不能在不破坏页面的情况下获得用户的部门。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

获取用户的部门时。实际上你应该get()结果。使用$user->departments(),您将获得不是结果集合的查询构建器。

使用get()方法($user->departments()->get())的替代方法您可以使用快捷方式:$user->departments

答案 1 :(得分:0)

使用以下语法获取用户部门:

$user->departments;  

插入:

$user->departments()->attach($department->id);

删除:

$user->departments()->detach($department->id);

和同步:

$arr=array(13,25,12);
$user->departments()->sync($arr);