【问题标题】:Laravel using find without condition and dynamic where conditionLaravel 使用无条件查找和动态 where 条件
【发布时间】:2021-08-30 04:30:16
【问题描述】:

我想查询一个雄辩的方法,然后分页。所以我把代码写成

    $roles = Role::find();
    if (!empty($request->get("globalFilter"))){
        $roles->where('name','LIKE','%' . $request->get("globalFilter"). '%');
    }
    return response()->json($roles->paginate($request->get("perPage")));

上面抛出以下错误

函数生成器查找的参数太少

我怎样才能在上面的查询中调用wherepaginate

【问题讨论】:

    标签: laravel laravel-query-builder


    【解决方案1】:

    首先,您必须将一个值作为参数传递给find() 方法。这样它将根据给定的id 返回一条记录。如果您没有id 并且想要获取第一条记录,则必须使用first()。 另外你正在使用分页返回结果,我认为你不需要 find() 方法。

    应该是

     $roles = Role::query();
        if (!empty($request->get("globalFilter"))){
            $roles->where('name','LIKE','%' . $request->get("globalFilter"). '%');
        }
    
    $result=$roles->find($id);
    

    或者你可以在下面的回调中使用 if 条件

    $roles = Role::where(function ($query)use($request){
        if(!empty($request->globalFilter)){
            $query->where('name','LIKE','%' . $request->get("globalFilter"). '%');
        }
        
    })->find($id);
    

    或者您可以使用when 使查询更简单

    $roles = Role::when((!empty($request->globalFilter)),function($query)use($request){
    
        $query->where('name','LIKE','%' . $request->get("globalFilter"). '%');
    })->find($id);
    

    注意:对于find()方法,您必须将一个参数传递为id,或者您必须使用first()。两者都返回一条记录。对于多条记录,您可以使用all()get()

    when 子句的参考:https://laravel.com/docs/8.x/queries#conditional-clauses

    引用 first() 和 find():https://laravel.com/docs/8.x/queries#retrieving-a-single-row-column-from-a-table

    如果您正在寻找返回名称类似的所有角色,那么您可以执行以下操作

     $roles = Role::when((!empty($request->globalFilter)),function($query)use($request){
        
            $query->where('name','LIKE','%' . $request->get("globalFilter"). '%');
        })->paginate($request->get("perPage"));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-30
      • 2013-12-25
      • 2021-09-18
      • 2014-10-04
      • 1970-01-01
      • 2021-07-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多