【问题标题】:saving multidimensional array as rows in mysql using laravel 5使用laravel 5将多维数组保存为mysql中的行
【发布时间】:2015-11-02 07:45:44
【问题描述】:

我有一个来自如下形式的多维数组:

  $items =  array:8 [▼
  "units" => array:4 [▼
    0 => "1"
    1 => "1"
    2 => "1"
    3 => "1"
  ]
  "article_group" => array:4 [▼
    0 => "2401"
    1 => "2503"
    2 => "1360"
    3 => "1198"
  ]
  "article" => array:4 [▶]
  "description_en" => array:4 [▶]
  "unit_price" => array:4 [▶]
  "discount" => array:4 [▶]
  "invoice" => array:4 [▶]
  "delivery_note" => array:4 [▶]
]

表单是动态生成的,不会总是包含 4 个值,但它们总是会包含相同数量的值。

我想要做的是将这些记录保存在这样的mysql数据库中:

$bookingDetails = new bookingDetails;
$bookingDetails->units = units[0];
$bookingDetails->article_group = article_group[0];
$bookingDetails->article = article[0];
$bookingDetails->description_en = description_en[0];
$bookingDetails->unit_price = unit_price[0];
...
$bookingDetails->save();

and then the same thing with [1] and [2] and so on.

但是我如何以这种方式迭代呢?

问候约翰

【问题讨论】:

    标签: php mysql laravel multidimensional-array


    【解决方案1】:

    而不是点击数据库 n 次,在您的情况下,count 次,您可以在 ONE HIT 中使用批量插入。

    $your_data = array( array('col_name_1'=>'Value 1', 'col_name_2'=>'Value 2'), array('col_name_1'=>'Value 3', 'col_name_2'=>'Value 4') ); your_model_name::insert($your_data);

    这将改善您的应用程序的响应时间

    【讨论】:

      【解决方案2】:

      只需将forforeach 循环设为

      for($i=0;$i<count($items['units']);$i++){
         $bookingDetails->units = $items['units'][$i];
         $bookingDetails->article_group = $items['article_group'][$i];
         $bookingDetails->article = $items['article'][$i];
         $bookingDetails->description_en = $items['description_en'][$i];
         $bookingDetails->unit_price = $items['unit_price'][$i];
         $bookingDetails->save();
      }
      

      【讨论】:

      • 是的,这行得通,不知道我在想什么……非常感谢!
      猜你喜欢
      • 2015-12-04
      • 2021-02-07
      • 2015-08-10
      • 2015-09-22
      • 1970-01-01
      • 2016-06-14
      • 2020-03-19
      • 2011-04-05
      • 1970-01-01
      相关资源
      最近更新 更多