我正在创建一个过滤搜索系统,人们可以选择哪些过滤器添加到他们的搜索。我希望能够添加一个过滤器,这取决于它的存在。所以,通常在laravel中执行这样的查询:
$users = User::where('active', '=', 1)->orWhere('subscribed', '=', 1)->get();
但是如果你不知道你是否要用 orWhere() 条款。我该怎么做?
orWhere()
5kgi1eie1#
可以使用where作用域附加where子句:
$users = User::where(function($query) use ($subscribed) { $query->where('status', 1); if ($subscribed) $query->orWhere('subscribed', 1); })->get();
oxcyiej72#
当一个方法
$users = User::when(condition1, function ($query) { $query->where('subscribed', '=', 1); })->when(condition2, function ($query) { $query->where('filter', '=', 3); })->get();
arknldoa3#
你的问题我不是100%清楚,但这里有一个方法:
$query = User::where('active', '=', 1); if ($needSubscribers) { $query = $query->orWhere('subscribed', '=', 1); } if ($needOtherCriteria) { $query = $query->orWhere('filter', '=', 3); } $users = $query->get();
00jrzges4#
你可以用 User::query() 要获取查询,请根据应用程序逻辑动态添加子句:
User::query()
$query = User::query(); if(Request::get('active')){ $query = $query->whereActive(); } if(Request::get('subscribed')){ $query = $query->orWhere('subscribed', 1); } return $query->get();
4条答案
按热度按时间5kgi1eie1#
可以使用where作用域附加where子句:
oxcyiej72#
当一个方法
arknldoa3#
你的问题我不是100%清楚,但这里有一个方法:
00jrzges4#
你可以用
User::query()
要获取查询,请根据应用程序逻辑动态添加子句: