作者:月雨淅淅 | 来源:互联网 | 2023-09-12 10:45
我想在Laravel项目中进行多次插入,但是我不知道该怎么做。我需要循环执行还是有其他方法可以执行?我有点困惑。我正在使用querybuilder。
控制器代码。
if($request->smsn == 'on'){
$events->smsnotify = 1;
$numbers = \DB::table('users')
->where('school_id','=',$sid->school_id)
->where('role',$request->group_id)
->select('phone','name')
->get();
dd($numbers);
$sms = DB::table('sms')->insert([
'user_id' => $sid->id,'school_id' => $sid->school_id,'msg' => 'New Event '. $request->name,'mobile_number' => $numbers,'name' => 'Sample','isSend' => 1
]);
}
转储结果
Collection {#552 ▼
#items: array:5 [▼
0 => {#550 ▼
+"phone": "+63 (928) 206-5706"
+"name": "Ayden Kutch"
}
1 => {#568 ▼
+"phone": "(0817) 447-1492"
+"name": "Ruthie Quigley"
}
2 => {#567 ▼
+"phone": "+63 (920) 203-3874"
+"name": "Alaina O'Kon"
}
3 => {#569 ▶}
4 => {#570 ▶}
]
}
我想以这种格式将其插入我的sms
表中
+----+---------+---------------+---------------+--------+------------+------------+-----------+-------------+
| id | user_id | msg | mobile_number | isSend | created_at | updated_at | school_id | name |
+----+---------+---------------+---------------+--------+------------+------------+-----------+-------------+
| 8 | 13 | New Event | 123456 | 1 | NULL | NULL | 2 | Ayden Kutch |
+----+---------+---------------+---------------+--------+------------+------------+-----------+-------------+
在每个姓名和号码中。它会生成另一行。
您可以在循环中执行多个插入查询,也可以对一个或多个数组执行单个插入查询,但是您需要首先构建该数组。
$data = [];
foreach ($numbers as $number) {
$data[] = [
'user_id' => $sid->id,'school_id' => $sid->school_id,'msg' => 'New Event','mobile_number' => $number->phone,'name' => $number->name,'isSend' => 1
];
}
DB::table('sms')->insert($data);
这将构建一个将多个记录插入在一起的数组。
“通过传递数组数组,甚至可以通过一次调用insert
将多个记录插入表中。每个数组代表要插入表中的一行”
Laravel 5.5 Docs - Query Builder - Inserts
,
为我工作
$value = array();
foreach ($users as $user) {
$value = array(
'user_id' => $user->id,'name' => $user->name,'mobile_number' => $user->phone,);
DB::table('users')->insert($data);
}