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
marcus753
post
Post #2





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

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


^^ o widzisz trochę mi rozjaśniłeś sytuację czyli:

wykorzystując klase DB::metoda_statyczna zapytania piszemy w kontrolerze i w ogóle nie korzystamy z modelu
wykorzystując dziedziczenie z Eloquent zapytania piszemy w kontrolerze natomiast pola,zmienne oraz metody które je definiują przechowujemy w plikach w modelu

czy w klasie DB:: mogę zdefiniować swoje własne zapytanie sql ? nie korzystając z metod insert select update itp. coś w rodzaju DB::SQL('moje zapytanie') <- w dokumentacji czegoś takiego nie widziałem ;(

Rozumiem że w laravelu nie ma podobnego mechanizmu co w Codeigniterze ? tzn. jeden standardowy model (który sam sobie definiuje) i który może mi obsłużyć kilka tabel?

Swoją drogą, tak się zastanawiam widząc taki kod:

  1. DB::table('users')
  2. ->where('name', '=', 'John')
  3. ->orWhere(function($query)
  4. {
  5. $query->where('votes', '>', 100)
  6. ->where('title', '<>', 'Admin');
  7. })
  8. ->get();


który daje nam takie zapytanie sql:

  1. select * from users where name = 'John' or (votes > 100 and title <> 'Admin')


czy to czasami nie jest sztuka dla sztuki ? przecież szybciej i dla mnie czytelniej jest napisać czysty kod SQL (który przecież trudny nie jest i stosunkowo przejrzysty) niż definiować wbudowane metody z parametrami...

Ten post edytował marcus753 5.07.2014, 16:25:04
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: 29.12.2025 - 23:38