Экспорт данных с параметром год и месяц Laravel Mysql

#mysql #laravel #laravel-5 #eloquent

#mysql #laravel #laravel-5 #красноречивый

Вопрос:

Я получаю stack, когда хочу реализовать экспорт данных с параметрами, это код из контроллера

 public function export_byMonth(Request $request)
{
    return Excel::download(new ProjectMSelected($request->m , $request->y), 'ProjectMonthly_'.$request->m.'_'.$request->y.'.xlsx');
}
  

Обратите внимание, что M — это месяц, а Y = год

и это код для экспорта с использованием maatwebsite / excel.

 namespace AppExports;

use Apptable2;
use MaatwebsiteExcelConcernsFromCollection;
use MaatwebsiteExcelConcernsFromQuery;
use IlluminateContractsViewView;
use MaatwebsiteExcelConcernsFromView;
use MaatwebsiteExcelConcernsExportable;
use MaatwebsiteExcelConcernsWithHeadings;

class ProjectMSelected implements FromView, WithHeadings
{
    use Exportable;

  public function __construct($m , $y)
  {
      $this->m = $m;
      $this->y = $y;
  }
  public function headings(): array
  {
   return [
      'Code Project' ,
      'Name',
      'Directorates',
      'Division', 
      'Scope',
      'Priority',
      'Progress',
      '%',
      'Remarks',
      'Plan',
      'pdate',
      'PM',
      'CO PM',
  ];
}
public function view(): View
{
    return view('report.excel.report_monthly_per_project', [
        'project_array' => table2::whereRaw('YEAR(tgl_masuk) = ',$this->y ,'And Month(tgl_masuk) =', $this->m)->get()
    ]);
}
}
  

он все еще анализирует сообщение об ошибке следующим образом, как устранить ошибку?

 SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1 (SQL: select * from `projectmonthlyview2` where Month(tgl_masuk) = YEAR(tgl_masuk) =)
  

Ответ №1:

Как использовать это вместо:

 table2::whereRaw('YEAR(tgl_masuk) = ' . $this->y . ' AND MONTH(tgl_masuk) = ' . $this->m)->get()
  

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

1. по-прежнему получено сообщение об ошибке, синтаксическая ошибка или нарушение доступа: 1064 У вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MariaDB, на предмет правильного синтаксиса для использования рядом с ‘И МЕСЯЦ (tgl_masuk) =’ в строке 1 (SQL: выберите * из projectmonthlyview2 , где ГОД (tgl_masuk) = И МЕСЯЦ (tgl_masuk) =)

2. Не могли бы вы убедиться, что $request-> y и $request-> m не являются нулевыми значениями?