#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). А затем сохраните строку в своей базе данных.