Сохраните все записи, используя запрос-> все в Laravel - PullRequest
0 голосов
/ 14 мая 2018

Laravel предоставляет разработчикам большую помощь в сохранении всех полей ввода формы , которая представляет собой одну запись с одной строкой кода.

, например, если я хочу сохранить форму, которая имеетнесколько полей ввода и одна запись в базу данных, например:

enter image description here

, затем я могу сохранить его с помощью приведенного ниже кода, и он прекрасно работает:

SaveOrder:: create($request->all());

Теперь у меня есть вопрос.Если у меня есть несколько записей (несколько строк) в форме, и я могу добавить новые строки с нажатой кнопкой.Тогда как я могу сохранить все записи с кодом выше?

Как: enter image description here

Ответы [ 3 ]

0 голосов
/ 14 мая 2018

Предполагая, что ваши входные имена выглядят примерно как name[], поскольку вы можете добавлять строки на лету, вы можете извлечь входные данные в виде массива и вставить их, используя что-то вроде этого:

$data = [];

$names = request('name');
$product_names = request('product_name');
$product_colour = request('product_colour');
$product_size = request('product_size');

for ($i = 0; $i < count($names); $i++) {
    // Add checks to make sure indices actually exist, probably using preprocessing in JS
    $data[] = [
        'name' => $names[$i],
        'product_name' => $product_names[$i],
        'product_colour' => $product_colour[$i],
        'product_size' => $product_size[$i],
    ];
}

Model::insert($data);
0 голосов
/ 14 мая 2018

Лучший ответ на этот вопрос - использовать оператор foreach.Нравится:

    $CustomerName= $request -> input('CustomerName');
    $ProductId= $request -> input('ProductId');
    $ProductName= $request -> input('ProductName');
    $ProductColor= $request -> input('ProductColor');

    foreach( $ProductId as $key => $n ) {
        SaveOrder::insert(
                    array(
                        'CustomerName' => $CustomerName[$key],
                        'ProductId' => $ProductId[$key],
                        'ProductName' => $ProductPrice[$key],
                        'ProductColor' => $ProductQuantity[$key],
                    )
                    );}
0 голосов
/ 14 мая 2018

Это легко сделать с помощью Eloquent:

$data = array(
    array('field1'=>'value1', 'field2'=> value2),
    array('field1'=>'value1', 'field2'=> value1),
    //...
);

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