Laravel 具有 where 函数限制的查询生成器

Laravel query builder with limit of where-functions

我正在尝试按 selection 用户可以进行排序,其中项目存储在数据库的 "type" table 中。我正在使用 Laravel 5.2.

多重 select 函数的屏幕截图(丹麦语文本):

他们可以例如select(在多select中):

如果他们 select 只有 Apple,则应显示所有 Apple - 很简单。 但是,如果他们 select 同时显示苹果和椰子,则应同时显示苹果和椰子。

$query = User::where('type', '=', 'Apple')->get(); 

得到所有的苹果。

但如果我这样做:

$query = User::where('type', '=', 'Apple')->where('type', '=', 'Coconut')->get();

只会显示 select 同时使用 Apple 和 Coconut 的用户。用户不可能 select 在后端同时使用苹果和椰子,因此不会显示任何用户。

如何构建一个查询,其中 selected 在后端键入 Apple 或 Coconut 的用户将通过构建一个不限制输出的查询来显示,仅当用户具有select同时编辑(这对用户来说不可能)?

如果您希望将结果限制为 Apples Coconuts,您应该使用正确的 ->orWhere() 语句,而不是另一个 ->where()。默认情况下,链接 ->where() 子句将导致 WHERE ... AND ... AND ...。将您的 $query 更改为:

$query = User::where('type', '=', 'Apple')->orWhere('type', '=', 'Coconut')->get();

将生成查询 WHERE ... OR ...,并将您的结果限制为 AppleCoconut

您可以使用:

$query = User::where(function($query) {
$query->where('type', '=', 'Apple')
->orWhere('type', '=', 'Coconut');
)}->get();

这将得到椰子和苹果..