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
Laravel Where子句-作为var传入?_Laravel_Laravel 5_Eloquent - Fatal编程技术网

Laravel Where子句-作为var传入?

Laravel Where子句-作为var传入?,laravel,laravel-5,eloquent,Laravel,Laravel 5,Eloquent,我希望将where子句动态传递到查询: User::where('published', '=', '1')->get(); 当我尝试传入数组时,会出现以下错误: $where = ['published', '=', '1']; User::where($where)->get(); 如何传入存储在var中的参数?您不能这样做。如果出于某种原因,您需要类似但有效的工具,请尝试以下方法: $where = ['published', '1']; User::where($wher

我希望将where子句动态传递到查询:

User::where('published', '=', '1')->get();
当我尝试传入数组时,会出现以下错误:

$where = ['published', '=', '1'];
User::where($where)->get();

如何传入存储在var中的参数?

您不能这样做。如果出于某种原因,您需要类似但有效的工具,请尝试以下方法:

$where = ['published', '1'];
User::where($where[0], $where[1])->get();
但更好的方法是使用:

用户
模型中:

public function scopePublished($query)
{
    return $query->where('published', 1);
}
你能试试这个吗

$attributes = [
                    [
                      'column' =>   'published',
                      'condition' =>   '=',
                      'value' =>  '1'
                    ],
                    [
                      'column' =>   'first_name',
                      'condition' =>   '=',
                      'value' =>  'John' 
                    ],
            ];


 $getUser = User::where(function($query) use($attributes){
                   foreach($attributes as $key => $value){
                   $query->where($value['column'],$value['condition'],$value['value']);
                            }
                        })->get();
您可以执行(部分)原始查询,并将SQL语句作为字符串传入。大概是这样的:

$where = "'published' = '1'";
User::whereRaw($where)->get();
$where = "'published' = :published";
$published = 1;
User::whereRaw($where, compact('published'))->get();
或者像这样:

$where = "'published' = '1'";
User::whereRaw($where)->get();
$where = "'published' = :published";
$published = 1;
User::whereRaw($where, compact('published'))->get();

作用域不是一个更好的方法,因为我必须对每个可能传入的where子句进行作用域