Хранение массивов в базе данных как одно значение - Laravel - PullRequest
0 голосов
/ 17 мая 2019

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

Аргумент 1, передаваемый в Illuminate \ Database \ Grammar :: parameterize (), должен иметь тип массива, заданная строка

Массив значений

enter image description here

Контроллер

 public function store(Request $request, $user_id, $broker_id)
     {
         $get_item_id = $request->all();
         $store_item = $this->patient->store(array_merge($get_item_id, ['user_id' => $user_id], ['broker_id' => $broker_id ]));
         return response()->json(['success' => true, 'data'=> ['items' => $get_item_id)]],200);

     }

Модель

protected $fillable = ['item_id'];

Когда я отправляю массив, как показано на рисунке, я получаю сообщение об ошибке выше ... Что я могу сделать неправильно в своем коде?

PS: я пытаюсь сохранить item[0] и item[1] в базе данных.

Новый код

public function store(Request $request, $user_id, $broker_id)
         {
             $get_item_id = $request->all();
             foreach($get_item_id as $data)
             {
             $store_item = $this->patient->store(array_merge($data, ['user_id' => $user_id], ['broker_id' => $broker_id ]));
             }
             return response()->json(['success' => true, 'data'=> ['items' => $get_item_id)]],200);

         }

Результаты

Столбец item_id пуст и возвращает только одну строку.

1 Ответ

0 голосов
/ 17 мая 2019

Попробуйте обновить цикл for, чтобы он соответствовал массиву, над которым вы хотите выполнить цикл

$get_item_id = $request->all(); // returns {"item_id": ["1", "2"]}
foreach($get_item_id['item_id'] as $data) // data will first be "1" then "2"
{
   // store the data
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...