我有用户和操作员,每个用户只能有一个操作员,但操作员可以有很多用户
所以在Operator模型中,我有:
public function profile() {
return $this->hasMany(User::class);
}
在用户模型中,我有:
public function operator() {
return $this->hasOne(Operator::class);
}
所以我认为我的关系正确吗?
现在,如果我具有用于管理操作员的输入字段,并且在该字段上具有多选框,因此我可以选择许多要添加到该操作员的用户,则输入字段将类似于:
<select name="profiles[]" id="profiles" multiple="multiple" class="multiselect2 form-control">
@foreach($profiles as $key => $profile)
<option value="{{ $profile->id }}">{{ $profile->name }} {{ $profile->lastname }}</option>
@endforeach
</select>
在提交表单时,该表单将发布所有选定的$ profiles列表(这些是用户表中的用户)
对我来说,棘手的是当我创建新的运算符并选择要附加到该运算符的用户时,我不知道如何在没有数据透视表的情况下添加和同步他们,并且我不需要数据透视表对此完全没有问题。
我有operators
表,该表应包含操作员ID和受管理用户ID
+----+-------------+---------+
| id | operator_id | user_id |
+----+-------------+---------+
| 1 | 3 | 23 |
| 2 | 3 | 28 |
| 2 | 3 | 36 |
+----+-------------+---------+
那么如何在操作员表中添加(附加或连接)操作员和受管用户的用户ID?
这是我当前的控制器代码
$user = new User;
$user->name = $request->name;
$user->email = $request->email;
$user->password = bcrypt($request->password);
$user->save();
$user->operator()->attach(['operator_id' => $user->id, 'profile_id' => $request->profiles]);
答案 0 :(得分:0)
只需雄辩地进行联接即可。
DB::select("SELECT * FROM Users u
INNER JOIN operators o dp ON u.id = o.user_id;");
只需确保对需要连接的每个表进行联接