首页 >数据库 >mysql教程 >如何将变量传递给 Laravel 的高级Where闭包?

如何将变量传递给 Laravel 的高级Where闭包?

Linda Hamilton
Linda Hamilton原创
2024-12-20 22:04:12163浏览

How Can I Pass Variables to Laravel's Advanced Where Closures?

将变量传递到 Laravel 的高级 Where 闭包

Laravel 的高级 where 函数提供了强大的方法来过滤查询。但是,您可能会遇到需要将外部变量传递到 where 函数中使用的闭包的情况。

示例场景

假设您想使用外部变量,例如 $searchQuery,在 where 闭包中:

->where('city_id', '=', $this->city->id)
->where(function($query)
    {
        $query->where('name', 'LIKE', '%'.$searchQuery.'%')
        ->orWhere('address', 'LIKE', '%'.$searchQuery.'%')

    })

使用关键字解决方案

您可以使用 use 关键字将必要的变量传递到闭包中:

DB::table('users')->where(function ($query) use ($searchQuery) {
    $query->where('name', 'LIKE', '%'.$searchQuery.'%')
    ->orWhere('address', 'LIKE', '%'.$searchQuery.'%')
})->get();

PHP 7.4 箭头函数(更新)

在 PHP 7.4 及更高版本中,可以使用箭头函数来更简洁语法:

DB::table('users')->where(fn($query) => $query->where('name', 'LIKE', '%'.$searchQuery.'%')
->orWhere('address', 'LIKE', '%'.$searchQuery.'%'))->get();

与常规匿名函数不同,箭头函数自动从父作用域捕获变量,并且不允许通过使用显式列出。但是,它们必须有一个 return 语句,并且不能包含多行代码。

以上是如何将变量传递给 Laravel 的高级Where闭包?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn