Laravel: передача параметров из функции в экспорт Excel

#php #laravel

#php #laravel

Вопрос:

У меня есть функция laravel, которая экспортирует запрос к базе данных в Excel. Я использую Maatwebsite Excel Facades Excel.

Проблема в том, что я пытаюсь передать 2 даты в качестве параметров, но когда я это делаю, я получаю ошибку неопределенной переменной.

Вопрос в том, как я могу передать эти переменные из основной функции в функцию Excel. Вот мой код:

     public function excel2 (Request $request){
   


// These are the values I want pass to the query: 
$initialDate=$request->get('initialDate');
$finalDate=$request->get('finalDate');



        
        Excel::create('DataByDate',function($excel){

        
            
            $excel->sheet('DataByDate',function($sheet){
         

            $data =DB::select('SELECT c.cuenta,g.fecha as fecha, t.descripcion as tipificacion, 
                g.observacion as comentario, ROUND(NVL(c.saldoVencido,0),2) AS SaldoVencidoQ, ROUND(NVL(saldoVencidoD,0),2) AS SaldoVencidoD, ROUND(NVL(c.saldo,0),2) AS SaldoQ, ROUND(NVL(c.saldoD,0),2) AS saldoD,
                ROUND(NVL(c.montoExtraf,0),2) AS MontoExtraf,c.cuotasVencidas AS CuotasVencidasQ, NVL(c.cuotasVencidasD,0) AS cuotasVencidasD, c.responsable AS Gestor from gestion g   
                    inner join cliente c on g.idCliente = c.id 
                   
                   inner join tipificacion t on g.idTipif = t.id_tipif
                    where esPromesa!="R"
                    // This part is the one that is failing
                    and cast fecha as date  between '.$initialDate.'  and '.$finalDate.';
                    ');

            
            $data= json_decode( json_encode($data), true);
            $sheet->fromArray($data,null,null,true);                   
            });    
        
        })->export('xls'); 
    
    }
 

Комментарии:

1. Добро пожаловать в SO… что вы пытаетесь передать?

2. не забудьте указать свою версию Laravel.

Ответ №1:

Если вам нужно использовать переменные в области замыкания, вы должны использовать use() инструкцию. Это будет выглядеть примерно так.

 Excel::create('DataByDate', function ($excel) use ($initialDate, $finalDate) {

    $excel->sheet('DataByDate', function ($sheet) use ($initialDate, $finalDate) {
 

Комментарии:

1. Довольно полезно, все работало нормально, большое вам спасибо.