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