我试图通过用户可以进行的选择进行排序,其中项目存储在数据库中的“类型”表中。我正在使用Laravel 5.2。
多重选择功能的屏幕截图(丹麦文字):
他们可以选择(在多选中):
如果他们只选择Apple,则应显示所有苹果 - 足够简单。 但如果他们同时选择苹果和椰子,苹果和椰子都应该展示出来。
$query = User::where('type', '=', 'Apple')->get();
得到所有的苹果。
但如果我这样做:
$query = User::where('type', '=', 'Apple')->where('type', '=', 'Coconut')->get();
仅显示已选择Apple和Coconut的用户。用户不可能在后端选择苹果和椰子,因此不会显示任何用户。
如何构建查询,其中在后端选择了Apple或Coconut类型的用户将通过构建查询来显示,该查询不限制输出仅在用户选择了两者时(这是不可能的)对于用户)?
答案 0 :(得分:2)
您可以使用:
$query = User::where(function($query) {
$query->where('type', '=', 'Apple')
->orWhere('type', '=', 'Coconut');
)}->get();
这将获得椰子和苹果..
答案 1 :(得分:1)
如果您希望将结果限制为Apple
或 Coconut
,则应使用正确的->orWhere()
语句,而不是另一个->where()
。默认情况下,链接->where()
子句将导致WHERE ... AND ... AND ...
。将您的$query
更改为:
$query = User::where('type', '=', 'Apple')->orWhere('type', '=', 'Coconut')->get();
将导致查询WHERE ... OR ...
,并将结果限制为Apple
或Coconut
。