ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2019-07-16 04:23:52  阅读:150  来源: 互联网

标签:php mysql laravel laravel-5-4


如果尚未附加关系,是否可以快速添加关系.我正在使用此代码来更新模型的关系;

        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), (1, 43), (1, 44), (1, 45), (1, 46), (1, 47), (1, 48), (1, 49), (1, 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);

标签:php,mysql,laravel,laravel-5-4
来源: https://codeday.me/bug/20190716/1474376.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有