php - Laravel - 如何在 $query 函数中定义变量?
问题描述
我的控制器中有这个 $query 函数。有用。但是当我尝试在其中添加一个变量时,它不起作用。这是我的完整功能
$setting = DB::table('settings')->where('id','=','1')->get();
foreach($setting as $st)
$date1 = $st->date1;
$date2 = $st ->date2;
$accounts = Account::with(['subaccount' => function($query){
$query->with(['subaccountinvoice'=> function($query){
$query->where('validate', '=','1')->whereBetween('updated_at', [$date1, $date2]);}])->get();
}])->get();
变量$date1和$date2没有定义,因为它们是 insidd 查询函数
解决方案
为了在 PHP 的闭包中继承变量,您需要使用use
关键字将其传递给闭包。
将您的帐户代码更改为:
$accounts = Account::with(['subaccount' => function($query) use ($date1, $date2) {
$query->with(['subaccountinvoice'=> function($query) use ($date1, $date2) {
$query->where('validate', '=','1')->whereBetween('updated_at', [$date1, $date2]);}])->get();
}])->get();
推荐阅读
- python - 内存有效的平均成对距离
- react-native - 如何在屏幕顶部呈现模式
- amazon-web-services - 如何将 CodeBuild 与不同帐户中的 CodeCommit 存储库链接?
- mdriven - “sqlLike”和“sqlLikeCaseInsensitive”转义字符?
- r - 如何使用 Rstudio 连接到在 AWS RDS 上运行的 Oracle 数据库
- python - 从 SQL 查询中提取的动态运行 Python 脚本
- java - Apache + Tomcat 部署中 Tomcat 线程池的行为
- java - 安慰错误 403:不允许使用消息 VPN
- node.js - Alexa SDK 重定向以设置会话属性
- algorithm - 31 位双射(完美)哈希算法