Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Laravel]Pomoc przy zapytaniu do bazy danych
Puchatek320
post 31.05.2020, 01:59:48
Post #1





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 4.11.2019

Ostrzeżenie: (0%)
-----


Cześć,
Czy mogę prosić o pomoc przy napisaniu kwerendy zawsze mam problem przy łączeniu tabel...

  1. $films = films::find($id);
  2.  
  3. $films_tags = DB::table('films')
  4. ->join('films_tags', 'film_id', '=', 'id')
  5. ->join('tags', 'name', '=', 'tag_id')
  6. ->select('name')
  7. ->get();


a teraz co bym chciał osiągnąć

mam tabele
films - > id, name
tags -> id, name
films_tags -> film_id, tag_id

Chciałbym pobrać wszystkie nazwy tagów dla konkretnego filmu

czyli wybierz wszystkie tag_id z tabeli films_tags na podstawie film_id które = $id i wybierz wszystkie nazwy z tags na podstawie tag_id
w skrócie wszystkie tagi dla konkretnego filmu.
Go to the top of the page
+Quote Post
viking
post 31.05.2020, 06:27:57
Post #2





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Może napisz jak według ciebie powinno wyglądać gołe zapytanie sql.


--------------------
Go to the top of the page
+Quote Post
nospor
post 31.05.2020, 07:49:02
Post #3





Grupa: Moderatorzy
Postów: 36 441
Pomógł: 6290
Dołączył: 27.12.2004




Nie znam skladni eloquent ale i bez tego widac golym okiem bledy.
1) Nie mowisz w joinach skad te pola sie biora. Krotko rzecz mowiac brakuje: tabela.pole
2) Tabele tags zdaje sie laczysz po ID a nie po NAME, co nie ?
3) No i brakuje WHERE na ID filmu ktory cie interesuje.

Generalnie poczytaj moze dokumentacje
https://laravel.com/docs/7.x/queries#joins
bo tam masz to wszystko ladnie wyjasnione


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Puchatek320
post 31.05.2020, 16:16:25
Post #4





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 4.11.2019

Ostrzeżenie: (0%)
-----


okey, chyba poprawiłem ale mam jeden problem w jaki sposób przekazać zmienną $test do widoku tak abym mógł zrobić w widkou {{$test->id}}


  1. $films = films::find($id);
  2.  
  3. $test = DB::table('films')
  4. ->join('films_tags', 'films_tags.film_id', '=', 'films.id')
  5. ->join('tags', 'films_tags.tag_id', '=', 'tags.id')
  6. ->select('tags.name', 'films_tags.id')
  7. ->where('films.id', $id)
  8. ->get();
  9.  
  10.  
  11.  
  12. return view('admin.edit_films', compact('films', $test));
Go to the top of the page
+Quote Post
nospor
post 1.06.2020, 08:47:10
Post #5





Grupa: Moderatorzy
Postów: 36 441
Pomógł: 6290
Dołączył: 27.12.2004




Tak to sie konczy jak sie pisze kod bez rozumienia co dane rzeczy robia...
Zajrzyj do manuala laravel i zobacz czego oczekuje view() - jestem pewien ze masz to tam bardzo ladnie opisane razem z przykladami
Nastepnie zajrzyj do manuala php i zobacz jak poprawnie uzywa sie funkcji compact()

Skoro bierzesz sie za troche bardziej zaawansowane programowanie to zacznij w koncu czytac jak sie rzeczy uzywa a nie strzelac na slepo


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 16.04.2024 - 17:12