Как отфильтровать данные в PDF с Laravel? - PullRequest
1 голос
/ 26 сентября 2019

Я использую 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');
}
 }

Фильтр не работает. Я хочу фильтровать отчеты по президенту и кварталу.но это печатает все записи из таблицы отчетов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...