Próbowałem znaleźć właściwy sposób na uzyskanie wszystkich danych z rekordu za pomocą klucza obcego. Mam prostą aplikację, w której użytkownicy mogą dodawać książki do "półki z książkami".Jak odzyskać pełne dane rekordu przez jego klucz obcy w laravel?
Oto moje tabele:
UŻYTKOWNICY
ID | NAME |
KSIĄŻKI
ID | PAGES | NUMBER_OF_CHAPTERS
schowka
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`)
W moich wymowny Models, a bookshelf
Książki hasMany i bookshelf_books
belongsTo w bookshelf
i mam ustawić te w moich modelach.
Co się dzieje, to użytkownicy tworzą "półkę z książkami" i dodają do niej książki z listy książek.
Jestem w punkcie, w którym muszę renderować półkę z książkami użytkownika.
Kiedy odzyskuję moje książki półki z wezwaniem takim jak Półka na książki :: znajdź ($ id) -> książki, książki, które należą do tej półki, wracają, dobrze ... ale tylko kolumny ze stołu na półce. Dostaję więc w zamian identyfikator półki z książkami, identyfikator użytkownika i identyfikator książki.
Chciałbym zwrócić wszystkie dane z samej książki, gdy pytam o książki na półce, a nie tylko o jej id. NA PRZYKŁAD. [{"book_id":1, "pages":364, "number_of_chapters":14},{"book_id":2, "pages":211, "number_of_chapters":9}]
.
Przez cały dzień drapałem się w głowę, próbując dowiedzieć się, jak zrobić to "dołączenie" o krok dalej w Laravel/Eloquent ORM.
Chciałbym pomóc w tej sprawie, dzięki!
To powinno działać: 'DB :: tabeli ('książek') -> wybierz ('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(); ' –
tak to działało, dobra robota Albert. Nie mogę pomóc, ale myślę, że musi to być czystszy sposób, aby zrobić to z ORM laravel, być może myślenie życzeniowe – user2551866
Nie mogę tego wypróbować, ale: '$ books = Book :: join ('BOOKSHELF_BOOKS', 'BOOKS.ID ',' = ',' BOOKSHELF_BOOKS.BOOKS_ID ') -> join (.... // reszta złączeń ' –