laravel为开发人员保存一个表单的所有输入字段提供了很大的帮助,这个表单是一条记录和一行代码。例如,如果我想将一个包含多个输入字段和一条记录的窗体保存到数据库中,例如:然后我可以用下面的代码保存它,效果非常好:
SaveOrder:: create($request->all());
现在我有个问题。如果我在一个窗体中有多个记录(多行),并且我可以通过按下按钮添加新行。那么我如何用上述代码保存所有记录呢?比如:
khbbv19g1#
使用雄辩的语言很容易做到:
$data = array( array('field1'=>'value1', 'field2'=> value2), array('field1'=>'value1', 'field2'=> value1), //... ); Model::insert($data);
vuktfyat2#
这个问题的最佳答案是使用 foreach 声明。比如:
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], ) );}
zc0qhyus3#
假设你输入的名字看起来像 name[] ,因为可以动态添加行,所以可以将输入检索为数组,并使用如下方式插入:
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);
3条答案
按热度按时间khbbv19g1#
使用雄辩的语言很容易做到:
vuktfyat2#
这个问题的最佳答案是使用
foreach
声明。比如:zc0qhyus3#
假设你输入的名字看起来像
name[]
,因为可以动态添加行,所以可以将输入检索为数组,并使用如下方式插入: