首页 > 解决方案 > laravel 检索 old() 其中查询值

问题描述

我有 2 个多值选择列表,我使用 jquery 在它们之间传递用户。

<select multiple="multiple" id="ListAllUsers" class="form-control">
                    @foreach ($users as $user)
                        <option class="content" value="{{ $user->id }}">{{ $user->name }}</option>
                    @endforeach
                </select>

<select name="user_id[]" required multiple="multiple" id="SelectedUsers" class="form-control">
                    @if (!empty(old('user_id')) && $create_form)
                        @foreach ($old_value_users as $old_user)
                            <option class="content" value="{{ $old_user->id }}">{{ $old_user->name }}</option>
                        @endforeach
                    @endif
                </select>

现在,我的问题是,当我在 whereIn 查询中传递 old('user_id') 值时,我只得到数组的第一个结果,而不是传入的所有结果。

$old_users_id = [old('user_id')];
$old_value_users = User::whereIn('id', $old_users_id)->get();

如果我$old_users_id = [old('user_id')]用它代替$old_users_id = [1,2,3],它就像一个魅力。我有dd(old('user_id')),它确实是一个数组,所以我不明白什么是打嗝!

标签: mysqllaravel

解决方案


因为old('user_id')是一个数组,所以你不应该把它放在一个数组中。试试这个;

如果 old('user_id') 为空,则应提供一个空数组。

$old_users_id = old('user_id')?old('user_id'):[];
$old_value_users = User::whereIn('id', $old_users_id)->get();

+ 点

如果您要向查询中添加大量整数绑定,而不是whereIn尝试。有关更多检查文档whereIntegerInRaw


推荐阅读