Php 如何将其保存在数据库中
在我的数据库中,我有像Php 如何将其保存在数据库中,php,jquery,database,laravel,laravel-5.3,Php,Jquery,Database,Laravel,Laravel 5.3,在我的数据库中,我有像id、产品id、公司名称、服务、数量、交货成本、交货日期、订单状态等列。 我认为我使用了Jquery和Html,Jquery在点击添加更多按钮时动态添加了更多的产品id、服务、交货成本、数量、交货日期、订单状态的输入字段。在提交表单时,我在控制器中通过执行dd($allData)得到了这些信息 我的问题是如何将这些数据保存到数据库中 array:8 [▼ "_token" => "gSddIeA11OBV60xU9YiDXn8fmsfkwxlQ85QmDdkQ"
id、产品id、公司名称、服务、数量、交货成本、交货日期、订单状态等列。
我认为我使用了Jquery和Html,Jquery在点击添加更多按钮时动态添加了更多的产品id、服务、交货成本、数量、交货日期、订单状态的输入字段。在提交表单时,我在控制器中通过执行dd($allData)得到了这些信息代码>
我的问题是如何将这些数据保存到数据库中
array:8 [▼
"_token" => "gSddIeA11OBV60xU9YiDXn8fmsfkwxlQ85QmDdkQ"
"service" => array:3 [▼
0 => "cement"
1 => "iron"
2 => "steel"
]
"qty" => array:3 [▼
0 => "5"
1 => "44"
2 => "5"
]
"delivery_cost" => array:3 [▼
0 => "5465"
1 => "553"
2 => "554"
]
"delivery_date" => array:3 [▼
0 => "2016-12-16"
1 => "2016-12-08"
2 => "2016-12-17"
]
"order_status" => "Confirm"
"delivery_vehicle" => array:1 [▼
0 => "Self_elivery"
1 => "Self_elivery"
2 => "Self_elivery"
]
]
public function store(Request $request)
{
$allData= $request->all();
dd($allData);
$product = new Order;
}
我试试这个
public function store(Request $request)
{
$date = $request->get('delivery_date');
$cost = $request->get('delivery_cost');
$service = $request->get('service');//add quotes next to service
foreach($date as $deliveryDate)
{
foreach($cost as $proAmount){
$db = new Order;
$db->delivery_date = $deliveryDate;
$db->amount = $proAmount;
$db->save();
}
}
return"ok";
}
我尝试了这种方法,但它多次存储相同的数据可能是因为循环中的循环。我需要您的帮助,使用for()将此数据存储到数据库中。应该适合您:
array:8 [▼
"_token" => "gSddIeA11OBV60xU9YiDXn8fmsfkwxlQ85QmDdkQ"
"service" => array:3 [▼
0 => "cement"
1 => "iron"
2 => "steel"
]
"qty" => array:3 [▼
0 => "5"
1 => "44"
2 => "5"
]
"delivery_cost" => array:3 [▼
0 => "5465"
1 => "553"
2 => "554"
]
"delivery_date" => array:3 [▼
0 => "2016-12-16"
1 => "2016-12-08"
2 => "2016-12-17"
]
"order_status" => "Confirm"
"delivery_vehicle" => array:1 [▼
0 => "Self_elivery"
1 => "Self_elivery"
2 => "Self_elivery"
]
]
public function store(Request $request)
{
$allData= $request->all();
dd($allData);
$product = new Order;
}
$data = $request->all();
for ($i = 0; $i < count($data['delivery_date']); $i++) {
$db = new Order;
$db->delivery_date = $data['delivery_date'][$i];
$db->delivery_cost = $data['delivery_cost'][$i];
....
$db->save();
}
$data=$request->all();
对于($i=0;$idelivery_date=$data['delivery_date'][$i];
$db->delivery_cost=$data['delivery_cost'][$i];
....
$db->save();
}
如果您想使用foreach$键,可以尝试此操作,它将为您提供索引
$date = $request->get('delivery_date');
$cost = $request->get('delivery_cost');
$service = $request->get('service');
foreach($date as $key=>$deliveryDate)
{
$db = new Order;
$db->delivery_date = $deliveryDate;
$db->amount = $cost[$key];
$db->save();
}
return"ok";
希望这对你有帮助。询问是否有任何查询执行大容量插入,而不是为每个插入运行新的sql查询(如果所有请求参数都存在于单个表中)
如果用户忘记选择任何一个输入字段,如服务、数量或成本,如何插入数据而不出错。如果我不想使用验证,但想按数据库中的原样插入数据,您可以使用->default()
或->nullable()
$db->delivery\u cost=isset($data)为每一列定义默认值['delivery_cost'][$i]?$data['delivery_cost'][$i]:0;
或者如果您使用的是PHP7$db->delivery_date=$data['delivery_date'][$i]?$0
如果用户忘记选择服务、数量或成本等任何一个输入字段,我如何插入数据而不出错。如果我不想使用验证,但想按数据库中的方式插入数据
Using foreach() should work for you very easy:
$inputdata = $request->all();
foreach ($inputdata as $key=>$val) {
$dbdata = new Order;
$dbdata ->delivery_date = $data['delivery_date'][$key];
$dbdata ->delivery_cost = $data['delivery_cost'][$key];
....
$dbdata ->save();
}