Как вставить несколько строк в Laravel - PullRequest
0 голосов
/ 11 апреля 2019

Я хочу вставить несколько строк в базу данных в 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

ответ дд 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 ]

3 голосов
/ 11 апреля 2019

Вы получаете эту ошибку, потому что,

$product_id = $request->product_id;

Выше это строка, извлеченная из $request объекта. Вы не можете зациклить строку.

EDIT

$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(),
    ];

}

Это должно работать. Один раз замени свой код на мой и проверь.

0 голосов
/ 11 апреля 2019

В вашем коде вы передаете price как массив 'price' => $request->price,

, который должен быть передан с ключом

foreach ($product_id as $key => $id) {
    $values[] = [
        'price'      => $request[$key]->price,
    ];
}
0 голосов
/ 11 апреля 2019

вы можете использовать функцию вставки построителя запросов, вот как вы можете это сделать.

$rows = [
['2019-04-11 12:48:43', 1, 12, 5], 
['2019-04-11 12:48:43', 1, 12, 5]
];

DB::table('table')->insert(
    $rows
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...