如何将其保存在数据库中

时间:2016-12-17 09:07:39

标签: php jquery database laravel laravel-5.3

在我的数据库中,我有id,product_id,company_name,service,qty,delivery_cost,delivery_date,order_status etc.

这样的列

我查看我使用了Jquery和Html,并且jquery在点击ADD more按钮时动态添加了product_id,service,delivery_cost,qty,delivery_date,order_status的更多输入字段。在提交​​表单时,我在控制器中执行此操作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";
} 

我试过这种方式,但它多次存储相同的数据可能是因为循环内部的循环。我需要你的帮助将这些数据存储在数据库中

4 个答案:

答案 0 :(得分:1)

使用import UIKit import Charts class ViewController: UIViewController { @IBOutlet weak var pieChartView: PieChartView! override func viewDidLoad() { super.viewDidLoad() let months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun"] let unitsSold = [10.0, 4.0, 6.0, 3.0, 12.0, 16.0] setChart(dataPoints: months, values: unitsSold) } func setChart(dataPoints: [String], values: [Double]) { var dataEntries: [ChartDataEntry] = [] for i in 0..<dataPoints.count { let dataEntry1 = ChartDataEntry(x: Double(i), y: values[i], data: dataPoints[i] as AnyObject) dataEntries.append(dataEntry1) } print(dataEntries[0].data) let pieChartDataSet = PieChartDataSet(values: dataEntries, label: "Units Sold") let pieChartData = PieChartData(dataSet: pieChartDataSet) pieChartView.data = pieChartData var colors: [UIColor] = [] for _ in 0..<dataPoints.count { let red = Double(arc4random_uniform(256)) let green = Double(arc4random_uniform(256)) let blue = Double(arc4random_uniform(256)) let color = UIColor(red: CGFloat(red/255), green: CGFloat(green/255), blue: CGFloat(blue/255), alpha: 1) colors.append(color) } pieChartDataSet.colors = colors } } 应该适合您:

for()

答案 1 :(得分:1)

你可以尝试这个如果你想使用foreach $ key会给你索引。

        $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";

希望这对你有所帮助。询问是否有任何查询

答案 2 :(得分:1)

批量插入而不是为每个插入运行新的sql查询(如果所有请求参数都存在于单个表中)。

  $data = [];

  foreach ($request->all() as $param => $val) {
    if( is_array($val) ) // Ignore string params. i.e. _token, order_status
    {
      foreach ($val as $key => $value) {

        $data[$index][$param] = $value;
        $data[$index]['created_at'] = \Carbon\Carbon::now();
        $data[$index]['updated_at'] = \Carbon\Carbon::now();

        $index++;
      }
      $index = 0;
    }
  }

  Model::insert($data);

答案 3 :(得分:1)

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();
}