Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZF]newsy z bazy
Forum PHP.pl > Forum > PHP > Frameworki
elmozaur
Dzien dobry.
W kolejnym dniu nauki Zenda chcialbym pobrac dane z bazy i wyswietlic je jeden pod drugim.

Wygooglalem kilka tutoriali i jest tam o zend_db_table.

Pytanie: czy jest to w miare uniwersalne rozwiazanie ? (to znaczy czy bez problemu obsluzy 100 oraz 10000 wpisow w bazie)
czy starac sie uzywac Zend_db_table zawsze ?
tr!ckle
Zend_Db_Table posiada wiele metod do tworzenia zapytań w bazie (jak select, insert, update etc.)
Tworząc klasę dziedziczącą po Zend_Db_Table_Abstract (możesz też bezpośrednio stworzyć obiekt Zend_Db_Table i na nim działać, ale przy dużych projektach będzie łatwo o bałagan i powielanie kodu), dla każdej tabeli w bazie osobną, tworzysz jakby mapę tej tabeli na obiekt (ot taki prosty ORM)

Wracając do twojego pytania - jeśli chcesz wypisać n elementów, to spokojnie możesz z tego korzystać. Ta klasa tylko przygotowuje zapytanie i je wykonuje i nie ma tam żadnej wyższej filozofii. Ja na ten przykład w swoich projektach też korzystam z tej klasy i wg mnie jest to bardzo wygodne narzędzie, choć nie pozbawione wad (jak wszystko).

Alternatywą dla Zend_Db_Table są Propel, Doctrine i inne orm-y. Możesz też w Zendzie pisać "z palca" zapytania - ale to mniej wygodne IMO, a Zend_Db_Table pozwala na wprowadzanie ręcznie kodu sql również (jeśli masz taką potrzebę)
elmozaur
to zapytam jeszcze o jedno:

Mam taka strukture katalogow:

application/modules/default/models/
application/modules/admin/models/

w module default stworzylem klase Newsy.php

pytanie1: jak nazwac klase? Application_Modules_Default_Model_DbTable_Newsy ?
pytanie2: jak utworzyc obiekt z takiej klasy w kontrolerze? $newsy = new Application_Modules_Default_Model_DbTable_Newsy();

cos mi nie wychodzi
tr!ckle
wystarczy Model_Newsy
definicja klasy musi mieć postać:

Kod
//sciezka do pliku APPLICATION_PATH/modules/default/models/Newsy.php

class Model_Newsy extends Zend_Db_Table_Abstract
{
    //dobrze sobie tutaj ustawić nazwę tabeli oraz nazwę primary key:
    protected $_name = 'nazwa_tabeli';
    protected $_primary = 'primary_key';

    //tutaj piszesz metody do działania na takiej tabeli np. getNewsById($newsID) - wiadomo;]


}


W tym przypadku zostanie wykorzystana klasa z modułu default.
Gdybyś chciał modele z jakiegoś konkretnego modułu (nie default) to nazwa klasy: [Nazwa_modułu]_Model_Newsy

Wywołujesz analogicznie: $newsyObj = new Model_Newsy();

Oczywiście przedrostek Model możesz sobie w bootstrapie zmienić wedle życzenia.
elmozaur
dziekuje za wyczerpujaca odpowiedz
KrzysiekWildfire
Tu masz przykładowy model i mapper.

http://forum.php.pl/index.php?s=&showt...st&p=855395
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.