在Laravel中使用request-> all保存所有记录记录

时间:2018-05-14 08:10:06

标签: php mysql laravel

Laravel为开发人员提供了很好的帮助,可以使用一行代码保存表单的所有输入字段,这是一条记录

就像我想要将具有多个输入字段和一条记录的表单保存到数据库中,如:

Fiddle

然后我可以使用下面的代码保存它并且效果很好:

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

现在我有一个问题。如果我在表单中有多个记录(多行),我可以按下按钮添加新行。那我怎么能用上面的代码保存所有记录呢?

像: enter image description here

3 个答案:

答案 0 :(得分:1)

使用Eloquent很容易做到:

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

Model::insert($data);

答案 1 :(得分:1)

假设您的输入名称看起来像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);

答案 2 :(得分:1)

此问题的最佳答案是使用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],
                    )
                    );}