📅  最后修改于: 2023-12-03 15:38:28.299000             🧑  作者: Mango
在 Laravel 中,查询生成器是一个强大的工具,可以轻松地构建适用于多种不同数据库的 SQL 查询。其中一个关键的功能是 where
子句,它允许您按特定的条件筛选结果。
但是,有时候您需要连接多个条件,以便根据更复杂的规则进行筛选。在本文中,我们将介绍如何在 Laravel 查询生成器的 where
子句中连接条件,以及如何使用各种操作符和逻辑运算符来创建更复杂的查询。
在 Laravel 中,您可以使用 where
方法来指定一个基本的条件。下面是一个简单的示例代码:
$users = DB::table('users')
->where('name', 'John')
->get();
在上面的代码中,我们使用了 where
方法来筛选 users
表中名字为 John 的用户。该方法通过指定列名和一个值来创建这个条件。
在很多情况下,您需要在查询中连接多个条件。例如,您可能想要查找名字为 John 且年龄大于 30 的用户。在 Laravel 中,可以使用多个 where
子句来实现这个目的。下面是一个示例代码:
$users = DB::table('users')
->where('name', 'John')
->where('age', '>', 30)
->get();
在上面的代码中,我们使用了两个 where
方法来创建两个条件:一个是名字为 John,另一个是年龄大于 30。这两个条件将连接在一起,以筛选出所需的用户。
除了基本的 where
方法外,还可以使用各种操作符来创建更具体的条件。例如,您可以使用 whereNull
方法来查找某个列为 NULL
的行,或者使用 whereBetween
方法来查找某个列的值在特定范围内的行。下面是一些常用的方法及其用法示例:
whereNull('column')
:查找某个列为 NULL
的行。示例代码:$users = DB::table('users')
->whereNull('deleted_at')
->get();
whereNotNull('column')
:查找某个列不为 NULL
的行。示例代码:$users = DB::table('users')
->whereNotNull('email')
->get();
whereBetween('column', [$min, $max])
:查找某个列的值在特定范围内的行。示例代码:$users = DB::table('users')
->whereBetween('age', [18, 30])
->get();
whereNotBetween('column', [$min, $max])
:查找某个列的值不在特定范围内的行。示例代码:$users = DB::table('users')
->whereNotBetween('age', [18, 30])
->get();
whereIn('column', $array)
:查找某个列的值包含在给定数组中的行。示例代码:$users = DB::table('users')
->whereIn('id', [1, 2, 3])
->get();
whereNotIn('column', $array)
:查找某个列的值不包含在给定数组中的行。示例代码:$users = DB::table('users')
->whereNotIn('id', [1, 2, 3])
->get();
除了基本的条件和操作符外,还可以使用逻辑运算符来连接多个条件。在 Laravel 中,有三个逻辑运算符可用于 where
子句:and
, or
和 not
。
and
运算符and
运算符可用于连接多个条件,并将它们组合成一个 AND
逻辑表达式。例如,以下代码将查找名字为 John 且年龄大于 30 的用户:
$users = DB::table('users')
->where('name', 'John')
->where('age', '>', 30)
->get();
以上代码等价于以下代码:
$users = DB::table('users')
->where('name', 'John')
->where('age', '>', 30)
->get();
or
运算符or
运算符可用于连接多个条件,并将它们组合成一个 OR
逻辑表达式。例如,以下代码将查找名字为 John 或年龄大于 30 的用户:
$users = DB::table('users')
->where('name', 'John')
->orWhere('age', '>', 30)
->get();
not
运算符not
运算符可用于否定条件。例如,以下代码将查找年龄不大于 30 的用户:
$users = DB::table('users')
->where('age', '<=', 30)
->get();
在本文中,我们介绍了如何在 Laravel 查询生成器的 where
子句中连接多个条件,并使用各种操作符和逻辑运算符来创建更复杂的查询。通过掌握这些技巧,您可以使用 Laravel 查询生成器轻松地构建强大的 SQL 查询,并获得需要的结果。