Я использую niklasravnsborg / laravel-pdf
Я хочу, чтобы при выборе из выпадающего списка имя президента и название квартала только что отфильтрованная дата печатались в pdf.
Фильтр не работает Я хочуфильтровать отчеты по президенту и кварталу.но при этом печатаются все записи из таблицы отчетов
Код
function viewPDF()
{
$reports = Report::with([
'quarters' => function($query) {
// filters on quarters table
return $query->where('column', 'value');
},
'presidents' => function($query) {
// filters on presidents table
return $query->where('column', 'value');
}
])
->filter() // only for reports table
->latest()
->get();
$pdf = PDF::loadView('reports.test1', ['reports' => $reports]);
return $pdf->stream('reports.pdf');
}
Таблицы 1-таблица четвертей
Schema::create('quarters', function (Blueprint $table) {
$table->increments('id');
$table->string('title');
$table->timestamps();
});
Schema::create('quarter_report', function (Blueprint $table) {
$table->integer('quarter_id')->unsigned();
$table->integer('report_id')->unsigned();
$table->primary(['quarter_id' , 'report_id']);
});
2- Таблица президентов
Schema::create('presidents', function (Blueprint $table) {
$table->Increments('id');
$table->string('P_name');
$table->timestamps();
});
Schema::create('president_report', function (Blueprint $table) {
$table->integer('president_id')->unsigned();
$table->integer('report_id')->unsigned();
$table->primary(['president_id','report_id']);
})
;
3- Таблица отчетов
Schema::create('reports', function (Blueprint $table) {
$table->Increments('id');
$table->integer('user_id')->unsigned();
$table->string('target_value');
$table->text('major_activity');
$table->string('indicator');
$table->string('responsibility');
$table->string('progress_activity');
$table->string('documents')->nullable();
$table->string('percentage_activity')->nullable();
$table->text('problem')->nullable();
$table->text('solution')->nullable();
$table->text('description')->nullable();
$table->string('image')->default('default.png');
$table->tinyInteger('status')->default('0');
$table->tinyInteger('active')->default('0');
$table->timestamps();
});
Модель
Модель отчета
class Report extends Model
{
public function quarters() {
return $this->belongsToMany('App\Quarter', 'quarter_report', 'report_id', 'quarter_id');
}
public function presidents() {
return $this->belongsToMany('App\President', 'president_report', 'report_id', 'president_id');
}
public function scopeFilter($query){
$president = request('president');
if ( isset($president)&& trim($president) != '' && $president != 'all'){
$query->whereHas('presidents' , function ($query )use ($president){
$query->whereId($president);
});
}
$quarter = request('quarter');
if ( isset($quarter)&& trim($quarter) != '' && $quarter != 'all'){
$query->whereHas('quarters' , function ($query )use ($quarter){
$query->whereId($quarter);
});
}
}
Президент Модель
class President extends Model
{
public function reports() {
return $this->belongsToMany('App\Report', 'president_report', 'president_id', 'report_id');
}
}
Квартальная модель
class Quarter extends Model
{
public function reports() {
return $this->belongsToMany('App\Report', 'quarter_report', 'quarter_id', 'report_id');
}
}
Фильтр не работает. Я хочу фильтровать отчеты по президенту и кварталу.но это печатает все записи из таблицы отчетов