2 回答
TA贡献1829条经验 获得超7个赞
你可以使用attach
和detach
方法。
您还可以使用该sync
方法来构造多对多关联。该sync
方法接受要放置在中间表上的 ID 数组。任何不在给定数组中的 ID 都将从中间表中删除。因此,此操作完成后,中间表中将只存在给定数组中的 ID:
$user->events()->sync([1,2]);
数组中1,2
是事件 id。
笔记
因为sync, attach
您应该在模型中定义关系。
用户模型
class User extends Model
{
public function events()
{
return $this->belongsToMany('App\Event','event_user','user_id','event_id');
}
}
事件模型
class Event extends Model
{
public function users()
{
return $this->belongsToMany('App\User','event_user','event_id','user_id');
}
}
根据您的代码。
$user = User::find(Auth::user()->id);
$user->events()->sync([$request->event_id]);
TA贡献2065条经验 获得超13个赞
我的可选答案:
(因为当您有大数据时,附加比同步更快)
//get current synced id
$attachedIds = $user->events()->pluck('id');
//check if there is a new id selected
//if its a single id
$new_id = array_diff([$request->event_id], $attachedIds);
//if its already an array
$new_id = array_diff($request->input('event_id', []), $attachedIds);
$user->events()->attach($new_id);
- 2 回答
- 0 关注
- 143 浏览
添加回答
举报