• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Laravel - Foreign key

0 głosów
772 wizyt
pytanie zadane 1 października 2017 w PHP przez Jogurt Początkujący (440 p.)

Witam, mam problem. Chcę zrobić tak, aby Foreign key wyświetlił swoją wartość czyli mam bazę danych, gdzie mam tabele 'categories', a w niej takie pola jak 'id', 'name', a w tabeli 'books' mam Foreign key 'category' i tam jest 'id' category. I chcę, aby na stronię wyświetlić nie 'id', a 'name' kategorii. Szukałem w necie, ale albo nie rozumiałem, albo nie działało. Tutaj kod: 

https://pastebin.com/DpdCP70w  <- welcome.blade.php

https://pastebin.com/GnV87RBa -< MainController.php

https://pastebin.com/aGauSA1G <- Model Books.php

https://pastebin.com/r5ECByhP <- Model Categories.php

https://i.imgur.com/aOz4VOc.png <- Tabela categories

https://i.imgur.com/SKwAiiO.png <- Tabela books 

Liczę na waszą pomoc :).

1 odpowiedź

0 głosów
odpowiedź 1 października 2017 przez Arkadiusz Waluk Ekspert (290,910 p.)

Szukałem w necie, ale albo nie rozumiałem, albo nie działało

Pokaż czego nie rozumiesz, albo co Ci nie działało.

W tej chwili mogę jedynie odesłać do dokumentacji i powiedzieć: dodaj relację, bo jej nie masz.

https://laravel.com/docs/5.5/eloquent-relationships#defining-relationships

komentarz 1 października 2017 przez Jogurt Początkujący (440 p.)

Np. to https://www.youtube.com/watch?v=oPc5ijQXq2s Ten Pan robi sobie relacje i piszę w szablonie '$post->category->name' i pojawia mu się nazwa kategorii. Nie rozumiem dlaczego i jak mam tak zrobić u mnie.

komentarz 1 października 2017 przez Arkadiusz Waluk Ekspert (290,910 p.)

Nie za bardzo mam czas na dokładnie prześledzenie całego filmiku, ale dalej nie rozumiem czego ty nie rozumiesz :P

Jak wnioskuję od strony baz danych wiesz czym jest klucz obcy, czym relacja i tak dalej. A więc dodajesz pole category_id do tabeli books. Następnie robisz relację jeden do wielu (jedna kategoria do wielu postów), a więc dodajesz w modelu Category relację do Books (hasMany). Na koniec w Books robisz belongsTo, aby dało się wyciągnąć w obydwie strony. I to tyle.

komentarz 1 października 2017 przez Jogurt Początkujący (440 p.)
I wtedy bede mial dostep do nazwy kategorii z modelu Books?
komentarz 1 października 2017 przez Arkadiusz Waluk Ekspert (290,910 p.)
Tak, powinieneś mieć bez problemu.
komentarz 1 października 2017 przez Jogurt Początkujący (440 p.)

Nadal nie działa :(. Bo jak robię foreacha to mam tylko te dane co miałem, czyli: id, title, author, img, category i jak robię takiego foreacha: 

@foreach($books as $book) 

{{$book->category->name}} - to nie działa

@endforeach

komentarz 1 października 2017 przez Arkadiusz Waluk Ekspert (290,910 p.)
A jak dokładnie zrobiłeś? Masz na pewno powiązane rekordy w bazie danych?
komentarz 1 października 2017 przez Jogurt Początkujący (440 p.)

Rozwiązałem to tak, że dałem następnego foreacha: 

@foreach($cat = DB::table('categories')->where('id', $book->category)->get() as $cate)
komentarz 1 października 2017 przez Arkadiusz Waluk Ekspert (290,910 p.)
Jest to rozwiązanie zapewne działające, ale moim zdaniem totalnie zbędne, skoro Eloquent powinien sam Ci to połączyć.
1
komentarz 1 października 2017 przez wojtekson16 Bywalec (2,640 p.)
Widoki są od wyświetlania danych, a nie pobierania ich z bazy ;)
komentarz 2 października 2017 przez efiku Szeryf (75,160 p.)
ale to laravel :)

Podobne pytania

0 głosów
1 odpowiedź 286 wizyt
0 głosów
0 odpowiedzi 399 wizyt
pytanie zadane 3 sierpnia 2019 w Python przez reaktywny Nałogowiec (46,230 p.)
0 głosów
0 odpowiedzi 765 wizyt
pytanie zadane 14 sierpnia 2020 w PHP przez Paweł123 Nałogowiec (33,540 p.)

93,605 zapytań

142,530 odpowiedzi

322,999 komentarzy

63,095 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...