我想在laravel中的数据库中插入多行,插入时会显示这样的错误
Array to string conversion (SQL: insert into `equipments` (`created_at`, `driver_id`, `price`, `product_id`) values (2019-04-11 12:48:43, 1, 12, 5), (2019-04-11 12:48:43, 1, 12, 5))
html表单 http://prntscr.com/najtv9
dd回应 http://prntscr.com/najst5
这是控制者
$product_id = $request->product_id;
foreach($product_id as $k => $id)
{
$values[] = [
'driver_id' => $request->driver_id,
'product_id' => $request->product_id,
'price' => $request->price,
'created_at' => Carbon::now()
];
}
DB::table('equipments')->insert($values);
答案 0 :(得分:3)
您收到该错误的原因是,
$product_id = $request->product_id;
上面是从$request
对象获取的字符串。您不能循环字符串。
编辑
$product_id = $request->product_id;
foreach ($product_id as $k => $id) {
$values[] = [
'driver_id' => $request->driver_id,
'product_id' => $id,
'price' => $request->price[$k],
'created_at' => Carbon::now(),
];
}
这应该有效。将代码替换为我的代码并进行检查。
答案 1 :(得分:0)
您可以使用查询生成器插入功能,这是您可以执行的操作。
$rows = [
['2019-04-11 12:48:43', 1, 12, 5],
['2019-04-11 12:48:43', 1, 12, 5]
];
DB::table('table')->insert(
$rows
);
答案 2 :(得分:0)
在您的代码中,您将price
传递为数组'price' => $request->price,
应该通过密钥传递
foreach ($product_id as $key => $id) {
$values[] = [
'price' => $request[$key]->price,
];
}