【问题标题】:Multi selection bootstrap insert in database Laravel多选引导插入数据库 Laravel
【发布时间】:2019-09-04 15:05:14
【问题描述】:
我正在尝试创建多选引导输出以保存在数据库中,但我在控制器中获得了一个数组,例如 ["6","7"]。我该如何保存?
有 2 个选择意味着必须创建 2 行。
我正在尝试的查询:
$table = Pool_user::updateOrInsert(['pool_id' => [$string1], 'user_id' => $request['id']]);
谁能帮我解决这个问题?
【问题讨论】:
标签:
php
mysql
laravel
eloquent
relationship
【解决方案1】:
通过直接回答您的问题,您需要使用要输入的值创建一个数组数组。
类似这样的:
$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"]
希望对你有帮助