Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [laravel]model
marcus753
post
Post #1





Grupa: Zarejestrowani
Postów: 281
Pomógł: 3
Dołączył: 8.06.2009
Skąd: Kraków

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


wybaczcie, mam już wyrzuty sumienia - 3 post z kolei mojego autorstwa ale chyba tylko tutaj można spotkać ludzi którzy wiedzą o czym piszą (IMG:style_emoticons/default/Lkingsmiley.png)

Tym razem chodzi o model, kurcze jaką on pełni rolę ?

W katalogu models tworze sobie klase które jest rozszerzeniem klasy Eloquent która to zawiera pewne podstawowe metody/zapytania. Tylko że w większości przykładów ludzie w tej klasie definiują jedynię nazwę tabeli a zapytanie piszą w kontrolerze na zasadzie
  1. MojaKlasa::find(1)
zamiast
  1. DB::select(select * from `moja tabela` where id='1');


Załóżmy że mam 2 formularze, jeden służy do CRUD użytkowników a drugi CRUD userów do tej pory w CI robiłem sobie jeden model np. base_model gdzie miałem 4 funkcje każda z nich przyjmowała 2 parametry nazwę tabeli na której ma działać i opcjonalny parametr z danymi, dzięki temu w kontrolerze mogłem sobie wywołać po prostu metodę
  1. dodaj($nazwa_tabeli,$tablica_z_danymi_do_dodania)


Jak coś takiego powinno się robić w laravelu ? przeglądam już chyba 3 przykład gdzie autor po prostu zapytania SQL pisze w kontrolerze a sam plik w katalogu models tworzy jedynie po to by podać nazwę tabeli...
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
memory
post
Post #2





Grupa: Zarejestrowani
Postów: 616
Pomógł: 84
Dołączył: 29.11.2006
Skąd: bełchatów

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


Tak, jest prościej ale załóżmy, że musisz wypisać 10 użytkowników

  1. DB::query(select * from users limit 10);


Klient prosi o zmianę bazy danych z mysql do microsoft sql server. Zamieniasz w configu na mssql i nagle dupa. W mssql nie ma czegoś takiego jak LIMIT jest TOP. Aplikacja do poprawki.
Gdy używasz wrapper'a czy ORM problemu zazwyczaj nie ma.

Laravel daje ci wolną ręke.

  1. Given this tables:
  2.  
  3. Users
  4. id
  5. name
  6.  
  7. Posts
  8. id
  9. content
  10. user_id
  11.  
  12. Select all post from specific user:
  13.  
  14.  
  15. /* First Way */
  16. $user=User::find(1); // Just Eloquent
  17. $posts=$user->posts; // Just Eloquent
  18.  
  19. /* Second Way */
  20. $posts=User::with('posts')->find(1); // Eloquent with Eager loading
  21.  
  22.  
  23. /* Third Way */
  24. $posts=User::find(1)->load('posts'); // Eloquent with Lazy Eager Loading
  25.  
  26.  
  27. /* Fourth Way */
  28. $posts=User::join('posts','users.id','=','posts.user_id')->where('users.id',1)->get(); // Eloquent with Query Builder methods
  29.  
  30.  
  31. /* Fifth Way */
  32. $posts=DB::table('users')->join('posts','users.id','=','posts.user_id')->where('users.id',1)->get(); // Just Query Builder
  33.  
  34. /* Sixth Way */
  35. $posts=DB::select('select * from users join posts on users.id = posts.user_id where users.id = 1'); // Just SQL


Wszystko zależy od ciebie. Jeżeli nie chcesz ORM usuwasz extends i tak jak w Ci dodajesz metody dodaj,usun itd


Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 11.10.2025 - 16:31