【问题标题】:Need to insert array data using laravel controller需要使用 laravel 控制器插入数组数据
【发布时间】:2020-07-09 15:22:06
【问题描述】:

我有一个如下所示的数组数据。我想将其中的一些数据保存到 mysql 表中。 当我 dd($request->all) 控制器函数中的数据时,它看起来像这样。

array:1 [
  "{"cart":" => array:1 [
    "{"product":{"id":1,"category":1,"product_name":"Brinjal 500g","product_image":"1585409454.jpeg","product_price":232,"unit":"500g","product_description":null,"stock":"In Stock","product_status":1,"show":1,"delievery_date":null,"vendor":null,"quantity":18,"item_type":"feature_product","created_at":"2020-03-28T15:30:54.000000Z","updated_at":"2020-03-28T15:30:54.000000Z","deleted_at":null,"categories":{"id":1,"category_name":"Fresh Fruits","category_image":null,"category_description":null,"category_status":1,"show":0,"created_at":"2020-03-28T15:30:12.000000Z","updated_at":"2020-03-28T15:30:12.000000Z","deleted_at":null}},"quantity":1}" => null
  ]
]

我想将 id 和总数量显示最后一个对象添加到表中。表格行看起来像这样。

$table->increments('id');
$table->integer('order_id');
$table->integer('product_id')->unsigned();
$table->integer('total_quantity');
$table->timestamps();
$table->softDeletes();
$table->foreign('product_id')->references('id')->on('products')->onDelete('cascade');

如何在 laravel 中使用这些数据编写存储函数

结果数据如下所示

Array
(
    [{"cart":] => Array
        (
            [{"product":{"id":1,"category":1,"product_name":"Brinjal 500g","product_image":"1585409454.jpeg","product_price":232,"unit":"500g","product_description":null,"stock":"In Stock","product_status":1,"show":1,"delievery_date":null,"vendor":null,"quantity":18,"item_type":"feature_product","created_at":"2020-03-28T15:30:54.000000Z","updated_at":"2020-03-28T15:30:54.000000Z","deleted_at":null,"categories":{"id":1,"category_name":"Fresh Fruits","category_image":null,"category_description":null,"category_status":1,"show":0,"created_at":"2020-03-28T15:30:12.000000Z","updated_at":"2020-03-28T15:30:12.000000Z","deleted_at":null}},"quantity":1}] => 
        )

)

这是我的最新更新

$data = [];
foreach ($request->all() as $key => $value) {
   $data[$key]['product_id'] = $value['product']['id'];
   $data[$key]['quantity'] = $value['quantity'];
   dd($value);
}

【问题讨论】:

  • 你能echo '<pre>'; print_r($request->all());
  • 你能不能 (echo '
    '; print_r($request->all());) 我们不明白你的数据为什么 id 字段出现 2 次相同的值?
  • @DilipHirapara 我在最后几列中根据您的要求更新了我的问题

标签: mysql laravel vue.js


【解决方案1】:

遍历传入的数据并制作如下所示的数组。

通过创建数据数组并将数组作为批量数据插入数据库来试试这个:

// this will decode your json data that you're getting in the post data
$postdata = json_decode($request->all(), true);

$data = [];
foreach ($postdata as $key => $value) {        
    $data[$key]['product_id'] = $value['product']['id'];
    $data[$key]['quantity'] = $value['quantity'];
}

// $data now will have data as following structure

$data = [[
    'product_id' => 2,
    'total_quantity' => 7   

],
[
    'product_id' => 2,
    'total_quantity' => 7   

]];

$order = Order::create($data);

【讨论】:

  • 我试过了,但显示了这个错误。 (json_decode() 期望参数 1 是字符串,给定数组)
  • @kalana93 这样您就可以在帖子中获取数组,因此您不需要包含 $postdata = json_decode($request->all(), true);代码中的这一行。
  • 我删除了该行并像这样编辑 foreach this.foreach ($request->all() as $key => $value) 。然后它显示此错误。未定义索引:产品
  • @kalana93 你能做 dd($value);在 foreach 循环中显示输出。
  • 我这样做。但仍然显示“未定义的索引:产品”错误
猜你喜欢
  • 2018-05-27
  • 1970-01-01
  • 2021-08-15
  • 2020-05-02
  • 2022-07-08
  • 2019-10-18
  • 2020-12-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多