在需要将外部变量传递到 Laravel 高级 where 子句的情况下,例如使用用户定义的过滤结果时搜索条件,文档中提供的默认语法可能不够。
幸运的是,有一个更方便的解决方案,使用use 关键字,它允许您将父作用域中的变量捕获到定义 where 子句的闭包中。例如:
DB::table('users')->where(function($query) use ($searchQuery) { $query->where('name', 'LIKE', '%'.$searchQuery.'%') ->orWhere('address', 'LIKE', '%'.$searchQuery.'%'); });
在此示例中, $searchQuery 变量从父作用域传递到闭包中,并且可以在 where 子句中使用。 use 关键字确保变量是通过引用捕获的,从而允许在闭包内访问和修改它。
或者,随着 PHP 7.4 箭头函数的引入,您可以使用更简洁的语法:
DB::table('users')->where(fn($query) => $query->where('name', 'LIKE', '%'.$searchQuery.'%') ->orWhere('address', 'LIKE', '%'.$searchQuery.'%'));
箭头函数自动从父作用域捕获变量,无需使用 use 显式列出它们。但是,需要注意的是,箭头函数始终返回一个值,并且需要省略 return 关键字。
以上是如何将变量传递到 Laravel 高级 Where 子句中?的详细内容。更多信息请关注PHP中文网其他相关文章!