Laravel - 如何在$ query函数中定义变量?

yas*_*e j 1 laravel

我的控制器中有这个$ 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();
Run Code Online (Sandbox Code Playgroud)

变量$ date1$ date2未定义,因为它们是insidd查询函数

nak*_*kov 8

为了在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();
Run Code Online (Sandbox Code Playgroud)