Laravel 使用另一个 table 和输入查询从 table 获取数据

Laravel querying to get data from a table using another table and an input

所以对于上下文有 3 tables。

借款人table

    protected $table = 'borrowers';
    protected $primaryKey = 'id';
    protected $fillable = ['borrower_name', 'IC', 'phone_no', 'address'];

书籍table

    protected $primaryKey = 'id';
    protected $fillable = ['ISBN', 'year', 'book_title', 'author', 'publisher_name', 'category'];

最后 借用 table with id, borrower_id, book_id, issue_date, return_date and late_return_status 这是一个布尔值。 borrower_id 和 book_id 是外键。

用户还执行搜索以选择要显示哪个借阅者的借书。我得到了借款人的 ID 并将其存储在变量 $id.

所以我需要查询以从图书 table 中获取借款人借阅的图书的所有信息 + issue_date、return_date 和 late_return_status。

以下是我目前尝试过的内容。

  $books_borrowed = Borrow::join('books', 'borrow.book_id', '=', 'books.id')
                                        ->where('borrow.borrower_id', '=', $id)
                                        ->get(['books.ISBN', 'books.book_title','books.year' ,'books.author', 'books.publisher_name', 
                                        'borrow.issue_date', 'borrow.due_date', 'borrow.late_return_status']);

我认为缺少另一个 join 来获取 borrowersbooks 表链接到外键?

$books_borrowed = Borrow::join('books', 'borrow.book_id', '=', 'books.id')
    ->join('borrowers', 'borrow.borrower_id', '=', 'borrowers.id')
    ->where('borrow.borrower_id', '=', $id)
    ->get(['books.ISBN', 'books.book_title', 'books.year','books.author', 'books.publisher_name',
           'borrow.issue_date', 'borrow.due_date', 'borrow.late_return_status']);

这样,您就连接了所有 3 个表:

--------------                  ----------
 borrowers.id                    books.id
--------------                  ----------
      |                               |
      |    --------------------       |
      |---> borrow.borrower_id        |
            borrow.book_id     <------|  (you have this join)
           --------------------