Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何将其保存在数据库中_Php_Jquery_Database_Laravel_Laravel 5.3 - Fatal编程技术网

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