Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel 6:如何在关系中添加多个where CALUSE_Php_Laravel_Relationship_Where Clause_Laravel 6 - Fatal编程技术网

Php Laravel 6:如何在关系中添加多个where CALUSE

Php Laravel 6:如何在关系中添加多个where CALUSE,php,laravel,relationship,where-clause,laravel-6,Php,Laravel,Relationship,Where Clause,Laravel 6,我正在尝试使用关系获取实体的用户 $users = $entity->users()->paginate(20); 但是现在我想根据发送到API的参数运行多个where条件,所以如果我这样做 $users = $entity->users(); //$users->where($where_array) $users->paginate(20); 我出了内存错误。它首先获取所有用户,然后尝试分页(在where condition中注释),因此如何将此查询拆分为多

我正在尝试使用关系获取实体的用户

$users = $entity->users()->paginate(20);
但是现在我想根据发送到API的参数运行多个where条件,所以如果我这样做

$users = $entity->users();
//$users->where($where_array)
$users->paginate(20);
我出了内存错误。它首先获取所有用户,然后尝试分页(在where condition中注释),因此如何将此查询拆分为多行,并在最后运行它,而不使用
DB
query

示例我想做什么,但取决于发送的参数而不是固定参数

$user->posts()
    ->where('active', 1)
    ->orWhere('votes', '>=', 100)
    ->get();
所以我查一下

if(!empty($request->first_name)){
  ->where('first_name', 'like', '%'.$request->first_name.'%')
}
等等。我试过这个

$where = "";

    $like_parameters = array(
        'first_name', 'last_name', 'email', 'phone'
    );

    foreach ($like_parameters as $parameter){
        if(isset($request->$parameter) &&!empty($request->$parameter)){
            $where .= "->where('$request->$parameter', 'like', '%'.$request->$parameter.'%')";
        }
    }
    
    $users = $entity->users().$where->paginate($per_page);

我得到了对字符串上的成员函数paginate()的
调用,因此我想将
$where
绑定到查询,但不是作为字符串,而是作为查询本身的一部分。

只要不使用(get,find…)从数据库获取结果,就可以控制查询生成器并添加许多“where”

当您设置所有条件并根据需要构建查询时,您可以获取结果:

        $results=$query->get();

只要不使用(get,find…)从数据库获取结果,就可以控制查询生成器并添加许多“where”

当您设置所有条件并根据需要构建查询时,您可以获取结果:

        $results=$query->get();