Необходимо вставить массив данных с помощью контроллера laravel - PullRequest
0 голосов
/ 29 марта 2020

у меня есть массив данных, как это ниже. Я хочу сохранить некоторые из этих данных, а не все в 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
  ]
]

я хочу добавить идентификатор и общее количество показывает последний объект в таблице. Строки таблицы выглядят следующим образом.

$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}] => 
        )

)

this мое последнее обновление

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

1 Ответ

1 голос
/ 29 марта 2020

L oop через ваши данные, поступающие и создайте массив, как показано ниже.

Попробуйте это, создав массив данных и вставив массив в базу данных как массив данных:

// 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...