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

Laravel - Foreign key

Object Storage Arubacloud
0 głosów
585 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 (287,950 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 (287,950 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 (287,950 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 (287,950 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 (287,950 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ź 128 wizyt
0 głosów
0 odpowiedzi 262 wizyt
pytanie zadane 3 sierpnia 2019 w Python przez reaktywny Nałogowiec (40,990 p.)
0 głosów
0 odpowiedzi 492 wizyt
pytanie zadane 14 sierpnia 2020 w PHP przez Paweł123 Nałogowiec (33,500 p.)

92,556 zapytań

141,404 odpowiedzi

319,562 komentarzy

61,942 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...