0
votes

I have a laravel function that exports a Database query to Excel. I'm using Maatwebsite\Excel\Facades\Excel.

The problem is I'm trying to pass 2 dates as parameters but when I do so I get an Undefined variable error.

Mi question is how can I pass this variables from the main function to the excel function. Here's my code:

    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
Welcome to SO ... what is it you are trying to pass?lagbox
don't forget to include your Laravel version.Gabriel

1 Answers

0
votes

If you need to use variables in the closure scope, you should use the use() statement. This would look like this.

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

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