【发布时间】:2018-01-03 12:38:18
【问题描述】:
如果尚未附加关系,是否有一种快速附加关系的方法。我正在使用此代码来更新模型的关系;
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]:完整性约束违规:1062 键“PRIMARY”的重复条目“1-41”(SQL:插入
message_user(message_id,user_id)值(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'));
【问题讨论】:
-
MySQL 支持
INSERT IGNORE,但我不认为 laravel 也支持。 -
我认为唯一的解决方案是在附加之前检查每个用户是否存在关系。
-
$request->get('users')中存储了什么?用户 ID? -
$request->get('users') 是一个用户 ID 列表的数组,例如 [41, 42, 43, 44, 45, 46, 47, 48, 49, 50] 来自上面的例子
标签: php mysql laravel laravel-5.4