📜  如何在 where 子句中连接,如 laravel 查询生成器 - PHP (1)

📅  最后修改于: 2023-12-03 15:38:28.299000             🧑  作者: Mango

如何在 where 子句中连接,如 Laravel 查询生成器 - PHP

在 Laravel 中,查询生成器是一个强大的工具,可以轻松地构建适用于多种不同数据库的 SQL 查询。其中一个关键的功能是 where 子句,它允许您按特定的条件筛选结果。

但是,有时候您需要连接多个条件,以便根据更复杂的规则进行筛选。在本文中,我们将介绍如何在 Laravel 查询生成器的 where 子句中连接条件,以及如何使用各种操作符和逻辑运算符来创建更复杂的查询。

基本的 where 子句

在 Laravel 中,您可以使用 where 方法来指定一个基本的条件。下面是一个简单的示例代码:

$users = DB::table('users')
            ->where('name', 'John')
            ->get();

在上面的代码中,我们使用了 where 方法来筛选 users 表中名字为 John 的用户。该方法通过指定列名和一个值来创建这个条件。

连接多个 where 条件

在很多情况下,您需要在查询中连接多个条件。例如,您可能想要查找名字为 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, ornot

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 查询,并获得需要的结果。