Laravel Where子句-作为var传入?
我希望将where子句动态传递到查询: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
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子句进行作用域