拉拉维尔。 .JOIN应该过滤结果吗?
距离我所知道的远处,.join
只是加入而不会过滤任何东西。但是我遇到了一个问题,似乎正在被过滤。
for ($i=0; $i < count($borrowers); $i++) {
$borrowed_books[$i] = Borrower::join('borrows', 'borrows.borrower_id', '=', 'borrowers.id')
->join('late_returns', 'late_returns.borrow_id', '=', 'borrows.id')
->join('books', 'borrows.book_id', '=', 'books.id')
->where('borrowers.id', '=', $borrowers[$i]->id)
->get(['borrowers.id','books.book_title','books.year','books.author', 'books.publisher_name', 'books.ISBN', 'borrows.issue_date', 'borrows.return_date', 'late_returns.late_return_fines', 'late_returns.overdue_days']);
}
return view('admin.borrowers', compact('borrowers', 'search', 'borrowed_books'));
查询部分- &gt; join('late_returns')
仅导致late_return表中存在的书籍出现。就是
当从查询中删除与late_returns表相关的所有内容时,显示了预期的行。知道为什么会发生这种情况吗?
So far from what i know, .join
is just to join and does not filter anything. But i have run into an issue where it seems like it is being filtered.
for ($i=0; $i < count($borrowers); $i++) {
$borrowed_books[$i] = Borrower::join('borrows', 'borrows.borrower_id', '=', 'borrowers.id')
->join('late_returns', 'late_returns.borrow_id', '=', 'borrows.id')
->join('books', 'borrows.book_id', '=', 'books.id')
->where('borrowers.id', '=', $borrowers[$i]->id)
->get(['borrowers.id','books.book_title','books.year','books.author', 'books.publisher_name', 'books.ISBN', 'borrows.issue_date', 'borrows.return_date', 'late_returns.late_return_fines', 'late_returns.overdue_days']);
}
return view('admin.borrowers', compact('borrowers', 'search', 'borrowed_books'));
The query section ->join('late_returns')
causes only books present in late_return table to show up. Which is
Where as everything with borrower_id 1 should show up.
The intended rows are shown when everything related to late_returns table is removed from the query. Any idea why this is happening?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)