【发布时间】:2018-05-09 00:08:20
【问题描述】:
我有一个for循环,会在循环中形成两个数组
foreach ($data as $key => $value) {
........
........
$user_insert[] = [
'keyy' => $value,
'key' => $value,
....
...
...
];
$someArray1[] = [
/*'user_id' => $insert_id,*/
'key1' => $value1,
'keyy' => $value,
.......
........
];
}
$user_insert[] 数组的计数为 4,$someArray1 的计数为 15。
在这个 for 循环之后,我需要将 $user_insert 数组数据插入数据库并使用该 insert_id 插入下一个数组 $someArray1
foreach($user_insert as $insert_user){
$unique_user_insert = array_unique($insert_user);
//dd($unique_user_insert);
$insert_id = DB::table('users')->insertGetId($unique_user_insert);
foreach ($someArray1 as $someArray) {
$someArray['user_id'] = $insert_id;
DB::table('table_name')->insert($someArray);
}
}
所以这里的问题是第二个循环中的数据插入了 60 次(4 * 15)。我只需要插入 15 行。
数据($someArray1) 来自第一个 for 循环,但我需要在第二个 for 循环中插入操作后得到的数组中添加一个 user_id。
那么我怎样才能只插入 15 行。
【问题讨论】:
-
你怎么知道哪个 userid 和哪个 somearray1 对应?
-
在第二个 for 循环中,插入数据,last_inserted Id 将是 $someArray1 中的 user_id。
$insert_id = DB::table('users')->insertGetId($unique_user_insert); -
@EdmCoff 有道理。目前尚不清楚插入的目标是什么。在阅读了你的问题几次之后,我不明白为什么你需要带有 $someArray1 的内部 foreach。看来您应该将插入的 ID 从 foreach($user_insert) 存储在一个变量中,然后在 foreach($user_insert) 完成后执行插入(您尝试在 foreach($someArray1) 中执行此操作。
-
我们知道您正在使用从插入语句中获得的那些 ID。 @EdmCoff 意味着您的内部循环不一定会使用正确的 key=>value 对来存储。
标签: php mysql arrays laravel-5