Генерация Excel на основе запроса из базы данных с использованием пакета vue и laravel maatwebsite - PullRequest
0 голосов
/ 30 января 2020

В основном я получил запрос, чтобы получить все записи на основе дат from и to. Я использую maatwebsite пакет в laravel. Проблема в том, что если я нажму кнопку «Генерировать», файл Excel не будет сгенерирован. Я использую версию 2.x этого пакета, потому что он стабильный. Может кто-то помочь мне с этим? Я просто хочу распечатать результаты запроса в формате Excel. Я не буду менять версию на 3.x, потому что если я сделаю это, функции импорта другого компонента не будут работать для версии 3.x. Большое спасибо

Мой контроллер, не обращайте внимания на dd только для целей тестирования

  public function generateReport(Request $request){

        $date = \DB::table('checkers')
        ->where('remarks_id',2)
        ->join('schedules','schedules.id','=','checkers.schedule_id')
        ->join('teachers','schedules.teacher_id','=','teachers.id')
        ->join('subject_codes','subject_codes.id','=','schedules.subject_code_id')
        ->join('remarks','remarks.id','=','checkers.remarks_id')
        ->where('checkers.created_at', '=>', $request->from)
        ->where('checkers.created_at', '=<', $request->to)
        // ->whereBetween('checkers.created_at', [Carbon::now()->startOfWeek(), Carbon::now()->endOfWeek()])
        ->select('teachers.fullname','subject_codes.subject_description','remarks.remarks_desc','checkers.created_at')
        ->get(); 

        dd($request->from);

        return Excel::download('users.xlsx');
    }

Если я нажму кнопку генерации, я получу ошибку Laravel Excel method [download] does not exist

Еще одна проблема для этого, даже если я dd запрос, он возвращает null Я даже не знаю, что происходит, я получил v-model в vue, чтобы получить запрос все еще не может показать.

Мой vue компонент

         <form action="">
                   <div class="col-xs-4 form-group">
                        <label>Start Date</label>
                       <date-picker name="from" id="from" v-model="from" :config="options" ></date-picker>
                    </div>
                    <div class="col-xs-4 form-group">
                        <label>End Date</label>
                          <date-picker name="to" id="to" v-model="to" :config="options" ></date-picker>
                    </div>
               </form>
            </div>
            <div class="box-footer">
                  <a type="button" href="/generate" >
                    <button  class="btn btn-info">
                        Generate Excel
                    </button>
                </a>
            </div>

Сценарий, в routes.php, маршрут для генерации которого /generate, и он указывает на метод контроллера generateReport

      data(){
            return{
                    from: new Date(),
                    options: {
                    format: 'YYYY-MM-DD',
                    showClear: true,
                    showClose: true,
                    },

                    to: new Date(),
                    options: {
                    format: 'YYYY-MM-DD',
                    showClear: true,
                    showClose: true,
                    } 
            }
        },
        created() {
            console.log('Component mounted.')
        },
        methods:{
            generate(){
                axios.get('/generate')
                    .then((res)=>{
                        console.log('asd')
                    })
            }
        }

1 Ответ

1 голос
/ 30 января 2020

Может быть, попытаться получить данные из вашей формы по $from = Input::get('from');

            Excel::create('file_name', function ($excel) {
                            $excel->sheet('Export', function ($sheet) {
                            // fetch your data
$from = Input::get('from');
$to = Input::get('to');
        $date = \DB::table('checkers')
                ->where('remarks_id',2)
                ->join('schedules','schedules.id','=','checkers.schedule_id')
                ->join('teachers','schedules.teacher_id','=','teachers.id')
                ->join('subject_codes','subject_codes.id','=','schedules.subject_code_id')
                ->join('remarks','remarks.id','=','checkers.remarks_id')
                ->where('checkers.created_at', '=>', $from)
                ->where('checkers.created_at', '=<', $to)
                // ->whereBetween('checkers.created_at', [Carbon::now()->startOfWeek(), Carbon::now()->endOfWeek()])
                ->select('teachers.fullname','subject_codes.subject_description','remarks.remarks_desc','checkers.created_at')
                ->get(); 
                            foreach($date as $temp) {

                            $sheet->appendRow('test1','test2');
    }
    })->export('xls');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...