php – 如果尚未附加Laravel关系附加

前端之家收集整理的这篇文章主要介绍了php – 如果尚未附加Laravel关系附加前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如果尚未附加关系,是否可以快速添加关系.我正在使用此代码来更新模型的关系;

if (!empty($request->get('roles')) && is_array($request->get('roles'))) {
            $message->Roles()->attach($request->get('roles'));
        }
        if (!empty($request->get('users')) && is_array($request->get('users'))) {
            $message->Users()->attach($request->get('users'));
        }

但我得到这个错误,我是这个错误;

sqlSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry ‘1-41’ for key ‘PRIMARY’ (sql: insert into message_user (message_id,user_id) values (1,41),(1,42),43),44),45),46),47),48),49),50))

我想避免经历一个很长的数组检查列表,哪些用户尚未附加并附加它们.如果这是唯一的方法,请告诉我.

我在想类似的东西;

$message->Users()->attachIfNotAttached($request->get('users'));

解决方法

像这样的东西可能会起作用:

获取已附加的ID:

$attachedIds = $message->Users()->whereIn('id',$request->get('users'))->pluck('id');

从请求数组中删除附加的ID:

$newIds = array_diff($request->get('users'),$attachedIds);

附加新ID:

$message->Users()->attach($newIds);

猜你在找的Laravel相关文章