Мультиселекторная вставка в базу данных Laravel - PullRequest
0 голосов
/ 14 апреля 2019

Я пытаюсь создать вывод множественной выборки для сохранения в базе данных, но получаю массив в моем контроллере, как ["6","7"] Как я могу сохранить это.

Есть 2 выбора, которые означают 2 строкидолжен создать.

Запрос, что я думал:


$table = Pool_user::updateOrInsert(['pool_id' => [$string1], 'user_id' => $request['id']]);

Может кто-нибудь помочь мне с этим, чтобы решить это?

1 Ответ

0 голосов
/ 14 апреля 2019

Отвечая непосредственно на ваш вопрос, вам нужно создать массив массивов со значениями, которые вы хотите ввести.

Примерно так:

$array = [];
foreach($request['pool_ids'] as $pool_id){ //$request['pool_ids'] -> ["6","7"]
   array_push($array, [
      'pool_id' => $pool_id,
      'user_id' => $request['id']
   ]);
}

$table = Pool_user::insert($array);

Однако, учитывая, что Pool_user является сводной таблицей отношения «многие ко многим», существует гораздо лучший способ сделать это.Допустим, в пользовательской модели есть отношение под названием polls().

. Вы можете просто попросить Eloquent синхронизировать отношения:

$user = User::find($request['id']);
$user->polls()->sync($request['pool_ids']); //$request['pool_ids'] -> ["6","7"]

Надеюсь, это поможет

...