📜  laravel where 闭包 - PHP (1)

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

Laravel where 闭包

在Laravel中,我们可以使用闭包函数来编写更复杂,更灵活的 where 查询语句。在本文中,我们将学习如何使用 where 闭包函数来查询数据库。

基本语法
$users = DB::table('users')
                ->where(function ($query) {
                    $query->where('name', '=', 'John')
                          ->orWhere('name', '=', 'Jane');
                })
                ->get();

在上面的示例中,我们使用了闭包函数来编写一个 WHERE 子句,其中我们查询了名字为 JohnJane 的用户。闭包函数以查询构建器实例作为参数,并且可以在该实例上调用其他查询构建器方法,例如 orWherewhereIn

用法示例
复杂的 WHERE 查询
$users = DB::table('users')
                ->where(function ($query) {
                    $query->where('name', '=', 'John')
                          ->orWhere('name', '=', 'Jane');
                })
                ->where(function ($query) {
                    $query->where('age', '>', 18)
                          ->where('age', '<', 30);
                })
                ->get();

在上面的示例中,我们查询名字为 JohnJane,并且年龄在 18 到 30 之间的用户。

嵌套的 WHERE 查询
$users = DB::table('users')
                ->where(function ($query) {
                    $query->whereIn('id', function($query) {
                        $query->select('user_id')
                              ->from('votes')
                              ->where('created_at', '>', '2021-01-01');
                    })
                    ->orWhere('name', '=', 'admin');
                })
                ->get();

在上面的示例中,我们查询所有在 2021 年 1 月 1 日之后投票的用户,或者名字为 admin 的用户。

多个闭包查询
$users = DB::table('users')
                ->where(function ($query) {
                    $query->where('name', '=', 'John')
                          ->orWhere('name', '=', 'Jane');
                })
                ->where(function ($query) {
                    $query->where('age', '>', 18);
                })
                ->orWhere(function ($query) {
                    $query->where('name', '=', 'admin')
                          ->where('age', '>', 30);
                })
                ->get();

在上面的示例中,我们查询名字为 JohnJane 且年龄大于 18,或者名字为 admin 且年龄大于 30 的用户。

总结

使用 where 闭包函数的优点是可以进行更复杂的查询,将多个条件嵌套在一起以便符合条件的结果。请熟悉和使用闭包,以便为您的应用程序提供更强大和灵活的查询。