代码:
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
des是空顺序)
答案 0 :(得分:0)
为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
。
答案 1 :(得分:0)
尝试使用此代码
$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');