我有一个表单,用户可以从选择框中选择多个标签。然后我需要创建货件,在我这样做之后,我需要从标签中获取用户选择的所有ID,并更新ID与用户选择的标签ID匹配的另一个表。
这是选择框:
<select name="bins[]" class="form-control" id="shipping_bin_labels_select" multiple="multiple">
@foreach(\App\Bin::all() as $bin)
<option value="{{ $bin->id }}" {{ old('bins') }}>{{ $bin->label }}</option>
@endforeach
</select>
以下是它的外观:
然后我创建了货物:
public function store(Request $request)
{
$this->validate($request, [
'truck' => 'required',
'bins' => 'required',
'stand_id' => 'required',
]);
$standName = request('stand_id');
$standName = Stand::where('name', '=', $standName)->first();
Shipment::create([
'truck' => request('truck'),
'stand_id' => $standName->id
])->save();
...........
之后,我需要遍历所有的bin标签,获取他们的ID并更新&#39; bins&#39;我刚刚制作的货件ID表。我不知道如何使用我刚刚选择的bin ID从bin表中获取所有bin。
这是我到目前为止所尝试的:
$bins = $request->input('bins');
$bins = implode(',', $bins);
// Tried this, but get empty collection. [$bins] (brackets) dont help either.
$bins = Bin::whereIn('id', $bins)->get();
// Tried this, but get "Call to a member function all() on string"
$bins = Bin::whereIn('id', $bins->all())->get();
// This is what I sort of need
$bins = Bin::whereIn('id', [3, 5, 6])->get();
供参考,当我DD这个:
$bins = $request->input('bins');
$bins = implode(',', $bins);
dd($bins);
我明白了:
这些是来自选择框的我的bin ID。不要担心长ID字符串,这就是我的ID格式化并存储在bin表格中。
答案 0 :(得分:2)
WhereIn接受一个数组
->whereIn('id', [1, 2, 3])
如果删除了内爆,则可以将该数组传递给查询。
所以它会变成
->whereIn('id', $bins)
答案 1 :(得分:1)