我一直在想出通過外鍵從記錄中獲取所有數據的正確方法。我有一個簡單的應用程序,用戶可以將書籍添加到他們的「書架」。如何通過laravel中的外鍵檢索記錄的完整數據?
這裏是我的表:
USERS
ID | NAME |
BOOKS
ID | PAGES | NUMBER_OF_CHAPTERS
BOOKSHELF
ID | USER_ID (foreign key to `users.id`) |
個
BOOKSHELF_BOOKS
ID | BOOKSHELF_ID (foreign key to `bookshelf.id`) | BOOKS_ID (foreign key to `books.id`)
在我的口才模型,一個bookshelf
的hasMany書籍和bookshelf_books
屬於關聯一個bookshelf
,我已經在我的模型設置這些了。
會發生什麼是用戶創建一個「書架」,並從書籍列表中添加書籍到它。
我在哪裏,我需要使用戶的書籍書架點。
當我通過類似Bookshelf :: find($ id) - >書籍的調用檢索我的書架書籍時,屬於該書架的書籍返回就好了......但只有書架表格中的列。所以我得到了書架ID,用戶ID和書籍ID。
我想已經回到書本身的所有數據是,當我在書架上的書籍查詢,而不只是它的ID。例如。 [{"book_id":1, "pages":364, "number_of_chapters":14},{"book_id":2, "pages":211, "number_of_chapters":9}]
。
我一直在抓我的頭,整天試圖找出如何採取Laravel /能言善辯ORM這個「加入」了一步。
很想任何解決這個問題,謝謝!
這應該工作: 'DB ::表( '圖書') - >選擇( 'BOOKS.ID', 'BOOKS.PAGES', 'BOOKS.NUMBER_OF_CHAPTERS') - >加入( 'BOOKSHELF_BOOKS', ''BOOKS.ID','=','BOOKSHELF_BOOKS.BOOKS_ID') - > join('bookshelf','BOOKSHELF_BOOKS.BOOKSHELF_ID','=','BOOKSHELF.ID') - > where('bookshelf.user_id ','=',$ id_user) - > get();' –
是的,這工作,很好的工作阿爾伯特。我不禁想到,用laravel的ORM必須有一個更清晰的方法,雖然也許是一廂情願的想法 – user2551866
我不能試試它,但: '$ books = Book :: join('BOOKSHELF_BOOKS','BOOKS.ID ','=','BOOKSHELF_BOOKS.BOOKS_ID') - > join(.... //其餘連接' –