【问题标题】:Array on where clause laravelwhere 子句 laravel 上的数组
【发布时间】:2021-12-04 09:23:32
【问题描述】:

我有一个值数组,我想在查询模型时将其传递到 where 子句中

我如何做到这一点?

我有 $categorypro 变量以这种格式低于数组

Array
(
    [0] => 4
    [1] => 8
    [1] => 5
)

目前我正在控制器中执行此操作,但未获得某些类别的正确数据

以下是我的控制器代码:

function filter_each_video(Request $request){
        if(request()->ajax()){
if($request->has('categorypro') && ($request->get('categorypro')!= null)){
                $categorypro = $request->get('categorypro');
                $item = Item::whereIn('category_id', $categorypro)->get();
            }
}
}

如果有人有更好的想法,请告诉我。或者这有什么问题,然后给出一些想法

【问题讨论】:

    标签: laravel laravel-5


    【解决方案1】:

    通常您会使用“whereIn”子句:

     MyModel::whereIn('attribute', ['value', 'value', 'value'])
            ->get();
    

    【讨论】:

    • @Bannett MyModel::whereIn('attribute', $array) ->get(); ---------------------------- 是这样的吧?
    【解决方案2】:

    首先,您的方法中已经包含$request,因此您无需调用request()。始终确保您正在验证您从请求中使用的任何数据。其次,您可以先获取查询,然后根据发布数据在必要时对其进行过滤。仅将您的 whereIn 过滤器放在 if 块内。

    public function filter_each_video(Request $request)
    {
        $request->validate([
            'categorypro'   => 'nullable|array',
            'categorypro.*' => 'int'
        ]);
    
        $query = Item::query();
    
        if ($request->ajax() && $request->categorypro) {
            $query->whereIn('category_id',$request->categorypro);
        }
    
        $categories = $request->categorypro 
            ? Category::whereIn('id',$request->categorypro)->get()
            : null;
    
        $items = $query->get();
    
        return view('myview',compact('items'));
    }
    

    【讨论】:

    • 它实际上是用于过滤器复选框。当我选中任何复选框时,到这里来获取相应的类别行。所以不需要验证。我想获取相应的类别行
    • 我添加了获取类别的代码。你真的应该验证。任何人都可以处理请求。
    猜你喜欢
    • 2021-11-13
    • 2020-11-28
    • 2017-11-30
    • 1970-01-01
    • 1970-01-01
    • 2015-10-06
    • 2018-04-01
    • 2020-09-28
    • 2013-06-30
    相关资源
    最近更新 更多