Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [inny][Laravel4] Odwołanie się modelu z poziomu kontrolera (pobranie danych z MySQL)
Forum PHP.pl > Forum > PHP > Frameworki
in5ane
Cześć, zacząłem się bawić frameworkiem Laravel 4. Chciałem pobrać dane z bazy danych, ale nie wiem za bardzo jak się za to zabrać. Tak chciałem zrobić model:
  1. <?php
  2.  
  3. class Home extends Eloquent {
  4.  
  5. public function getNews()
  6. {
  7. $results = DB::select('select * from news');
  8. }
  9.  
  10. }

Czy w tej funkcji wystarczy coś w tym stylu? Jak zwrócić (jakie return) dane?

I teraz kontroler, jak się z niego dobrać do tego modelu, robię coś takiego:
  1. <?php
  2.  
  3. class HomeController extends BaseController {
  4.  
  5. public function showIndex()
  6. {
  7. // co tutaj?
  8. return View::make('home');
  9. }
  10.  
  11. }


Osobiście dla mnie dokumentacja Laravela troszkę kuleje w niektórych kwestiach. Proszę o nakierowanie, dalej już będę kombinował sam.
destroyerr
Nie rozumiem dlaczego narzekasz na dokumentację. Ja znalazłem to co chciałeś w parę sekund.
Eloquent to jest Active Record więc byłoby dobrze dla Ciebie gdybyś się zapoznał z tym wzorcem.
Model Home? Jaki jest jego sens? Domyślam się, że chciałeś mieć model News. W kontrolerze możesz to potem sobie pobrać tak jak w przykładach z dokumentacji (tutaj albo tutaj).
in5ane
Model Home chcę dla strony głównej, na której będę pobierał ostatnie 2-3 newsy oraz inne informacje z bazy danych.
pitu
W modelu i metodzie getNews() zwróć tą wartość. Natomiast w kontrolerze:
  1. $news = Home::getNews();
destroyerr
Cytat
Model Home chcę dla strony głównej, na której będę pobierał ostatnie 2-3 newsy oraz inne informacje z bazy danych.

Nie tędy droga. Skoro chcesz 3 newsy to w modelu stwórz sobie metode np. News::scopeLatest($query, $count = 3).
nrm
Dokumentacja L4 faktycznie nie jest na razie zbyt wylewna ale muszę się zgodzić z @destroyerr to o co pytasz akurat w niej jest, zresztą stanowi taką w zasadzie niezależną od FW podstawę.

Masz to opisane tutaj: http://laravel.com/docs/queries
in5ane
Zrobiłem to w taki sposób w kontrolerze:
  1. $news = Home::getNews();
i w modelu:
  1. public static function getNews()
  2. {
  3. return DB::table('news')->orderBy('date', 'desc')->take(3)->get();
  4. }
Czy takie coś jest poprawnie?
destroyerr
Nie.
pitu
Dlaczego tworzysz taką 'sztywną' metodę? Powyżej @destroyerr podał przykład metody w modelu News, którą byś wywoływał.
in5ane
Dzięki, na ten moment wiem wszystko.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.