首页 >数据库 >mysql教程 >如何将变量传递到 Laravel 高级 Where 子句中?

如何将变量传递到 Laravel 高级 Where 子句中?

Patricia Arquette
Patricia Arquette原创
2024-12-17 07:01:25841浏览

How to Pass Variables into Laravel Advanced Where Clauses?

将变量传递到 Laravel 高级 where 子句

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

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