[英]How to attach different value for additional field in pivot table Laravel 5
我有这个字段的project_group
数据透视表: id, group_id, project_id, admin_id, user_id
这用于将组和项目连接在一起:
$group -> projects() -> attach($projects,array('admin_id' => Auth::user()->id));
是否可以为该数据透视表中的每个记录添加diffirent user_id。
例如:
第一记录:
id
= 1, group_id
= 1 project_id
= 2 admin_id
= 1 user_id
= 1
第二条记录:
id
= 2, group_id
= 1 project_id
= 3 admin_id
= 1 user_id
= 1
第3记录:
id
= 3, group_id
= 1 project_id
= 2 admin_id
= 1 user_id
= 2
第4记录:
id
= 3, group_id
= 1 project_id
= 3 admin_id
= 1 user_id
= 2
基本上,如果我从项目html列表中选择2个项目,从html用户列表中选择2个用户,我需要获得上面示例中的结果...
当然,像这样:
$projects = [
2 => ['admin_id' => 1, 'user_id' => 1],
3 => ['admin_id' => 1, 'user_id' => 2],
// and so on
];
$group->projects()->attach($projects);
如果我理解你的问题,你可以像这样建立一个这样的数组:
$projectsIds = [2,3];
$userIds = [1,2];
$projects = [];
$adminId = Auth::id();
foreach($userIds as $userId){
$projects += array_fill_keys($projectIds, [
'admin_id' => $adminId,
'user_id' => $userId
]);
}
$group->projects()->attach($projects);
这是一个解决方案,如果有人有更好的方法请放在这里...
$projectsIds = [11,33];
$userIds = [1,2,4];
$adminId = Auth::id();
if($group -> save()){
foreach($userIds as $userId){
$group -> projects() -> attach($projectsIds,array('admin_id' => $adminId, 'user_id' => $userId));
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.