我一直在尝试找出通过外键获取记录中所有数据的正确方式。我有一个简单的应用程序,用户可以将书籍添加到他们的“书架”中。
这是我的表格:
用户
ID | NAME |
书籍
ID | PAGES | NUMBER_OF_CHAPTERS
书架
ID | USER_ID (foreign key to `users.id`) |
书架上的书籍
ID | BOOKSHELF_ID (foreign key to `bookshelf.id`) | BOOKS_ID (foreign key to `books.id`)
在我的Eloquent Models中,一个“书架(bookshelf)”拥有多个书籍(books),而“书架-书籍(bookshelf_books)”属于一个“书架”,我已经在我的模型中设置好了这些关联。用户可以创建一个“书架”并从书籍列表中添加书籍到它里面。现在我需要渲染包含用户书籍的“书架(shelf)”。 当我通过像Bookshelf :: find($id)-> books这样的调用检索我的“书架书籍(bookshelf books)”时,属于该“书架”的书籍返回的很好...但仅限于“书架(bookshelf)”表的列。所以我只能得到书架ID、用户ID和书籍ID等信息。但是我希望在查询“书架(shelf)”中的书籍时返回书籍本身的所有数据,而不仅仅是它的ID。例如:[{"book_id":1, "pages":364, "number_of_chapters":14},{"book_id":2, "pages":211, "number_of_chapters":9}]
。我一整天都在想如何在Laravel / Eloquent ORM中进一步执行这个“join”。如果有任何帮助,我将不胜感激!谢谢!!
DB::table('books') ->select('BOOKS.ID', 'BOOKS.PAGES','BOOKS.NUMBER_OF_CHAPTERS') ->join('BOOKSHELF_BOOKS', 'BOOKS.ID', '=', 'BOOKSHELF_BOOKS.BOOKS_ID') ->join('bookshelf', 'BOOKSHELF_BOOKS.BOOKSHELF_ID', '=', 'BOOKSHELF.ID') ->where('bookshelf.user_id', '=', $id_user) ->get();
- Albert Casadessús$books = Book::join('BOOKSHELF_BOOKS', 'BOOKS.ID', '=', 'BOOKSHELF_BOOKS.BOOKS_ID')->join(....//rest of the joins
- Albert Casadessús