Support the ongoing development of Laravel.io →
Laravel Eloquent Blade

I am using PHP Version 7 - Laravel 5.8 and "maatwebsite/excel": "^3.1". When I filter the file from view blade, it performs well. It displays based on selected criteria.

Controller


      public function userresponseReport(Request $request, $export=false)
      {
      $userresponses = DB::table('user_response as g')
      ->select(
       DB::raw('g.created_at as created_date'),
       'g.msisdn', 
       'g.game_code', 
       'g.answer',
       'g.answer_code',
       'g.Amount_charged',
       'g.payment_ref',
       'g.status',
       'g.user_channel'                
      )               
     ->orderByRaw('g.created_at DESC'); 

    $start_date = $request->start_date;
    $end_date = $request->end_date; 

    $render=[];  
    if(isset($request->start_date) && isset($request->end_date))
    {
        $userresponses=$userresponses->whereBetween('created_at',[$start_date.' 00:00:00',$end_date.' 23:59:59']);
        $render['start_date']=$request->start_date;
        $render['end_date']=$request->end_date;
    }elseif(isset($request->start_date))
    {
        $userresponses=$userresponses->where('created_at',$request->start_date);
        $render['start_date']=$request->start_date;
    }        
    if(isset($request->msisdn))
    {
        $userresponses=$userresponses->where('msisdn','like','%'.$request->msisdn.'%');
        $render['msisdn']=$request->msisdn;
    }
    if(isset($request->game_code))
    {
        $userresponses=$userresponses->where('game_code','like','%'.$request->game_code.'%');
        $render['game_code']=$request->game_code;
    }   
    if(isset($request->user_channel))
    {
        $userresponses=$userresponses->where('user_channel','like','%'.$request->user_channel.'%');
        $render['user_channel']=$request->user_channel;
    }
    if(!empty($export))
    {
        return Excel::download(new UserresponseExport(), 'userresponse.xlsx');
    }               
    $userresponses= $userresponses->orderBy('created_at','DESC');
    $userresponses= $userresponses->paginate(15);
    $userresponses= $userresponses->appends($render);
    $data['userresponses'] = $userresponses;

    return view('report.userresponseReport',$data);        
    }

Exports


    class UserresponseExport implements FromQuery, WithHeadings, ShouldAutoSize, WithEvents
    {
    use Exportable;

    public function query()
    {
    return UserResponse::query()->select(
    DB::raw("created_at"),
    'msisdn',
    'game_code',
    'answer',
    'user_channel'
            );  
    }

    public function headings(): array
    {
    return [
    'Date Created',
    'MSISDN',
    'game_code',
    'Answer',
    'Channel'
    ];
    } 

View blade (userresponseReport.blade.php)

<div class="row" style="margin-bottom: 10px">
    {{ Form::model(request(),['method'=>'get']) }}
    <div class="col-sm-2">
         {{ Form::text('msisdn',null,['class'=>'form-control','placeholder'=>'MSISDN']) }}
    </div>
    <div class="col-sm-2">
         {{ Form::text('game_code',null,['class'=>'form-control','placeholder'=>'Game Code']) }}
    </div>   
    <div class="col-sm-2">
         {{ Form::text('user_channel',null,['class'=>'form-control','placeholder'=>'Channel']) }}
    </div>          
    <div class="col-sm-2">
        {{ Form::date('start_date',null,['class'=>'form-control','placeholder'=>'Date']) }}
    </div>
    <div class="col-sm-2">
        {{ Form::date('end_date',null,['class'=>'form-control','placeholder'=>'Date']) }}
    </div>          
    <div class="col-xs-2">
        {{ Form::submit('Search',['class'=>'btn btn-warning']) }}
        <a href="{{ route('userresponseReport',['export']) }}" class="btn btn-primary"><i class="fa fa-file-excel-o"></i> Excel</a>
    </div>
    {{ Form::close() }}
</div>

I have been on this for days now. The issue now is how do I make it to export only filtered data, and not all the data in the table.

Last updated 3 years ago.
0

Sign in to participate in this thread!

PHPverse

Your banner here too?

Moderators

We'd like to thank these amazing companies for supporting us

Your logo here?

Laravel.io

The Laravel portal for problem solving, knowledge sharing and community building.

© 2025 Laravel.io - All rights reserved.