如何在Laravel中插入多行

时间:2019-04-11 12:50:49

标签: php arrays laravel

我想在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);

3 个答案:

答案 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,
    ];
}