Как объединить 3 таблицы с помощью Laravel Eloquent? - PullRequest
0 голосов
/ 24 сентября 2019

мой стол

Код:

function viewPDF()
{
    $reports = Report::join('president_report', 'reports.id', '=', 'president_report.report_id')
        ->join('president_report', 'presidents.id', '=', 'president_report.president_id')->
        select('reports.*')->where('president_report.report_id')
        ->filter()->latest()->get();
    $pdf = PDF::loadView('reports.test1', ['reports' => $reports]);
    return $pdf->stream('reports.pdf');
}

Ошибка:

SQLSTATE [42000]: синтаксическая ошибка или нарушение доступа: 1066 Неуникальная таблица / псевдоним: 'President_report' (SQL: выбрать * из reports внутреннее объединение president_report в reports. id= president_report. report_id внутреннее соединение president_report на presidents. id = president_report. president_id, где president_report. report_id - нулевой порядок на created_at desc)

Ответы [ 2 ]

0 голосов
/ 24 сентября 2019

Попробуйте этот код

$reports = Report::join('president_report pr1', 'reports.id', '=', 'pr1.report_id')
        ->join('president_report pr2', 'presidents.id', '=', 'pr2.president_id')->
    select('reports.*')->where('pr1.report_id')
        ->filter()->latest()->get();
    $pdf = PDF::loadView('reports.test1', ['reports' => $reports]);
    return $pdf->stream('reports.pdf');
0 голосов
/ 24 сентября 2019

Используйте отдельные псевдонимы для двух объединений с таблицей president_reports:

function viewPDF() {
    $reports = Report::join('president_report pr1', 'reports.id', '=', 'pr1.report_id')
        ->join('president_report pr2', 'presidents.id', '=', 'pr2.president_id')->
    select('reports.*')->where('pr1.report_id')
        ->filter()->latest()->get();
    $pdf = PDF::loadView('reports.test1', ['reports' => $reports]);
    return $pdf->stream('reports.pdf');
}

Обратите внимание, что второе объединение выглядит подозрительно для меня, потому что я не вижу, куда попадает таблица presidentsвключены в запрос соединения.Но общее решение проблемы заключается в псевдониме president_report по-разному для двух соединений.

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