📅  最后修改于: 2023-12-03 15:17:13.216000             🧑  作者: Mango
Laravel 是一个基于 PHP 的开源 Web 应用程序框架,它提供了许多巨大的工具和功能来帮助开发人员快速地构建 Web 应用程序。其中一个最实用的功能是查询构建器,在其中 Laravel 提供了 where()
和 orWhere()
方法来方便查询 SQL 数据库数据的向导操作。在本文中,我们将学习 Laravel 的 where
和 orWhere
方法。
where()
方法用于对查询添加基本的 where 子句,其中包括一个需要匹配的列、一个运算符和一个值。默认情况下,where 子句使用 =
运算符,但可以使用其他运算符,例如 <>
、>
、<
或 <=
。
下面是一个查找文章题目是 "Laravel Where" 的查询示例:
$articles = DB::table('articles')
->where('title', '=', 'Laravel Where')
->get();
where
方法中可以使用 whereIn
和 whereNotIn
方法创建 IN
或 NOT IN
语句。这两个方法都接受一个列名和一个数组:
$articles = DB::table('articles')
->whereIn('id', [1, 2, 3])
->get();
$articles = DB::table('articles')
->whereNotIn('id', [1, 2, 3])
->get();
除了 =
操作符之外,Laravel Query Builder 还支持以下比较操作符:
| 运算符 | 描述 | | --- | --- | | = | 相等 | | <> 或 != | 不等于 | | > | 大于 | | >= | 大于等于 | | < | 小于 | | <= | 小于等于 | | between | 在两个值之间 | | not between | 不在两个值之间 | | like | 匹配 | | not like | 不匹配 | | in | 指定值集合 | | not in | 指定不在值集合中 |
下面是一些使用以上操作符的示例:
$users = DB::table('users')
->where('votes', '>', 100)
->get();
$users = DB::table('users')
->where('votes', '<=', 100)
->get();
$users = DB::table('users')
->where('name', 'like', 'T%')
->get();
$users = DB::table('users')
->where([
['status', '=', 'active'],
['subscribed', '<>', '1'],
])
->get();
orWhere()
方法用于创建一个新的 or where
子句,其根据 where
方法所提供的条件,来构造一个新的 or
子句。 当查询需要基于多个条件,而这些条件之间是 or
逻辑时,orWhere
方法比较适用。下面是一个用于检索文章标题中包含 "laravel" 或作者 ID 是 1 的查询示例:
$articles = DB::table('articles')
->where('title', 'like', 'Laravel%')
->orWhere('author_id', 1)
->get();
我们可以结合使用 where
和 orWhere
方法来创建更高级的 SQL 查询。下面是一个复杂的查询示例,查询文章的标题包含 "laravel" 且发布日期大于 2018 年 1 月 1 日,或作者 ID 是 1 的文章:
$articles = DB::table('articles')
->where('title', 'like', 'Laravel%')
->where('created_at', '>', '2018-01-01')
->orWhere('author_id', 1)
->get();
以上示例中,我们用最简单的形式展现了组合多个 where
条件的方式。
Laravel 提供了许多有用的 where 条件的函数辅助。我们可以使用这些函数,来增加一些结构化查询的各种过滤条件。下面是一个使用 whereDate
方法查询 2019 年 7 月的文章列表的示例:
$articles = DB::table('articles')
->whereDate('created_at', '>=', '2019-07-01')
->whereDate('created_at', '<=', '2019-07-31')
->get();
whereBetween
方法用于在两个值之间进行比较。下面是一个使用 whereBetween
方法查询文章评论数在 100 到 300 之间的所有文章的示例:
$articles = DB::table('articles')
->whereBetween('comment_count', [100, 300])
->get();
Laravel 的 where()
和 orWhere()
方法为我们提供了查询构建器中的一些便捷的功能,灵活的组合方式为我们的查询提供了关键的帮助。 通过这些方法,可以将查询构建器的优势发挥到极致,让查询功能更加智能。