将变量传递到 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中文网其他相关文章!