Как сохранить массив данных из laravel blade в базу данных

#php #laravel

Вопрос:

У меня есть этот сброшенный вывод с лезвия Laravel. В этом вы можете заметить, что существует множество объемов данных. Теперь, как вы сохраняете все данные, включая массив, в базе данных?

Данные Из блейда Формы

 array:9 [▼
  "_token" => "JjZqQiTv304JU65DNCli4MSjOsO0aqB84KVu8UgB"
  "category" => "Equestrian"
  "logistics" => "Barloworld"
  "currency" => "USD"
  "descriptions" => "Dolore labore cillum"
  "user_id" => "33"
  "m_description" => "Test"
  "ddate" => "2021-07-08"
  "amount" => array:2 [▼
    0 => "300"
    1 => null
  ]
]

 

Контроллер

         $data = $request->all();
        dd($data);
         $data = new Order();
        
         $data->amount = $request->get('amount');
         $data->m_description = $request->get('m_description');
         $data->ddate = $request->get('ddate');
         $data->currency = $request->get('currency');
         $data->descriptions = $request->get('descriptions');
         $data->logistics = $request->get('logistics');
         $data->category = $request->get('category');
         $data->code = $request->get('code');
         $data->user_id = $request->get('user_id');
         $data->save();
 

Комментарии:

1. Вы можете использовать любой подходящий для вас способ его хранения, например, сжать массив в значения, разделенные комами, или закодировать его в json. И извлеките его соответствующим образом

2. Таким образом, вы либо кодируете массив в формате json, либо нормализуете свою базу данных и сохраняете данные в другой таблице

3. @Абхишек, я новичок, можешь показать мне, как это сделать?

4. Довольно много. Зависит от данных и от того, как вы этого хотите

5. @Aless55 Я новичок, можешь показать мне, как это сделать?

Ответ №1:

Для сохранения массива вам придется использовать формат JSON. Иногда вы можете использовать сводные таблицы для решения этой проблемы, но нет смысла иметь сводную таблицу для суммы.

 $data->amount = json_encode($request->get('amount'));
 

При получении данных из базы данных вы можете выполнить приведение к модели или методу, который будет
return json_decode($this->amount)

Если бы вы предоставили больше информации о том, что именно может быть в сумме, я мог бы ответить лучше.

Ответ №2:

Я думаю, что вы можете использовать приведение моделей для хранения массивов в базе данных

перейдите по этой ссылке

https://laravel.com/docs/8.x/eloquent-mutators#array-and-json-casting

     protected $casts = [
            'amount' => 'array',
        ];
 

Ответ №3:

Вы можете превратить данные в строку, используя либо json_encode($array), либо сериализацию($array). А затем сохраните строку в своей базе данных.