как фильтровать данные и экспортировать их в Excel - PullRequest
0 голосов
/ 01 мая 2020

У меня есть таблица, где я представляю данные пользователю, и у меня есть базовая c панель фильтрации над таблицей, где пользователь может выполнять фильтрацию даты, и я хочу, чтобы пользователь мог экспортировать, чтобы превзойти отфильтрованные данные

class ReportsController extends Controller
{
protected $transactions ;
protected $accounts;

public function getTransactions(){
    $this->accounts = MerchantAccount::where('merchant_id', auth()->user()->id)->get();
    return Transaction::where('merchant_id', auth()->user()->id);
}
public function getFilterdTransactions($request){

    $filterd = $this->getTransactions();
    if($request->filled(['from','to'])){
        // take care of date filtering
        $filterd
        ->whereDate('tranDate','>',$request->from)
        ->whereDate('tranDate','<',$request->to);
    }
    if($request->filled('account')){
        // take care of account filtering
        $filterd->where('merchant_account_id',$request->account);
    }
    return $filterd;
}

public function report(Request $request)
{
    $this->transactions = $this->getTransactions();
    return view('pages.report')->with(['data' => $this->transactions->get(), 'accounts' => $this->accounts]);
}

public function filter(Request $request){

    $filterd = $this->getFilterdTransactions($request);

    if($request->has('excel')){
        $this->excel();
    }

    return view('pages.report')->with(['data' => $filterd->get(), 'accounts' => $this->accounts]);

}

// dowonload excel file
public function excel(){

    return Excel::download(
        new ReportsExport((
            $this->getTransactions()
                 ->get()
        )), 'Reports.xlsx');
}
}

форма фильтра

          <form action="" method="post">
        @csrf
        <div class="row">
          {{-- from & to selectors --}}
            <div class="col-md-12">
                <div class="row">
                    <div class="col-md-6">
                        <h4>From:</h4>
                        <input type="date" name="from" id="" class="form-control">
                    </div>
                    <div class="col-md-6">
                        <h4>To:</h4>
                        <input type="date" name="to" id="" class="form-control">
                    </div>
                </div>
            </div>
        </div>
        <div class="row">
            <div class="col-md-12">
                <div class="row">
                    <div class="col-md-4">
                        <button type="submit" name='excel' class="btn btn-primary">Excel</button>
                    </div>
                    <div class="col-md-4">
                        <a href="#" class="btn btn-default">Print</a>
                    </div>
                    <div class="col-md-4">
                        <select name="account" id="" class="form-control">
                            <option value="" disabled selected>Choose Account</option>
                            @foreach ($accounts as $item)
                                <option value="{{ $item->id }}">{{$item->name}}</option>
                            @endforeach
                        </select>
                    </div>
                </div>
            </div>
        </div>
        <button type="submit">send</button>
      </form>

Я пытался добавить кнопку экспорта в форму фильтрации, чтобы, когда пользователь щелкает по ней, я получал параметры фильтрации и передавал их getFilterdTransactions когда я получил данные и передал их excel методу, чтобы загрузить их, но по некоторым причинам они не работают

...