Laravel为开发人员提供了很好的帮助,可以使用一行代码保存表单的所有输入字段,这是一条记录。
就像我想要将具有多个输入字段和一条记录的表单保存到数据库中,如:
然后我可以使用下面的代码保存它并且效果很好:
SaveOrder:: create($request->all());
现在我有一个问题。如果我在表单中有多个记录(多行),我可以按下按钮添加新行。那我怎么能用上面的代码保存所有记录呢?
答案 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],
)
);}