lut 06

Każda tabela w bazie danych ma swój odpowiednik w postaci pliku zawarty w folderze application/models, wspominałem o tym poprzednio – dobrą metodą jest nazywać pliki tak samo jak nazywają się tabele w bazie, pliki jednak muszą być z dużej litery. Przykładowo dla tabeli guestbook, plik powinien się nazywać Guestbook.php, a przykładowa klasa powinna wyglądać tak:

class Model_Guestbook extends Zend_Db_Table_Abstract
{
	protected $_name="guestbook";
	protected $_primary = 'id';
}

Pole $_name jest obowiązkowe, natomiast Zend dla $_primary domyślnie przyjmuje ‘id’, chyba że nasz klucz główny tabeli jest inny to wtedy trzeba użyć tego pola i podać nazwę klucza. Właściwie rozbudowywać tej klasy do prostych zastosowań już niepotrzebna, dostarcza ona różnych metod pozwalających na zarządzanie danymi w tabeli guestbook.

Autor siema \\ tagi: , , , , , , ,



10 Odpowiedzi do “Tworzenie plików modelu”

  1. tryhp3 napisał(a):

    a co jeśli tabela ma kilka kluczy np klucz podstawowy i obcy albo inne kombinacje

  2. siema napisał(a):

    Tutaj podajesz tylko podstawowy klucz, a inne klucze to z tego co wiem to wykorzystujesz tylko w złączeniach tworząc zapytanie sql. No chyba że masz co innego na myśli i ktoś inny mógłby mnie oświecić :)

  3. tryhp3 napisał(a):

    O to mi chodziło, ale jeszcze mam sytuacje gdzie w tabeli nie ma klucza głownego (PK), tylko kilka PFK to co wtedy?

  4. siema napisał(a):

    Szczerze to nie wiem, wydaje mi się, że Zend wymaga aby tabela miała klucz główny, chociaż ustawianie parametru $_primary jest nieobowiązkowe no chyba, że twój klucz główny nazywa się inaczej niż id. Poza tym łatwo to sprawdzić, czy operacje na tabeli da się wykonać jeśli tabela nie ma klucza głównego.
    Z resztą co stoi na przeszkodzie abyś sobie taki klucz dodał, mam nadzieję że pojawi się ktoś bardziej obcykany w tych sprawach i nas oświeci.

  5. hesar napisał(a):

    Przy braku klucza podstawowoego Zend na podstawie opisu tabeli sam sprobuje ustalic PK
    jesli go nie ma nie bedzie mogl obslugiwac takiej tabeli przy pomocy klasy Zend_Db_Table
    cytat z dokumentacji:

    If you don’t specify the primary key, Zend_Db_Table_Abstract tries to discover the primary key based on the information provided by the describeTable()´ method.

    Note: Every table class must know which column(s) can be used to address rows uniquely. If no primary key column(s) are specified in the table class definition or the table constructor arguments, or discovered in the table metadata provided by describeTable(), then the table cannot be used with Zend_Db_Table.

  6. D.K. napisał(a):

    Podstawowym założeniem relacyjnych baz danych jest to iż każda tabela posiada swój klucz główny po którym krotki są jednoznacznie identyfikowane

  7. Katalog branżowy napisał(a):

    w naszym firmowym frameworku mamy mamy mozliwosc deklarowania w modelu relacji miedzy modelami, czyli najpierw wskazuje z jaka klasa i przez jaki kucz ma sie laczyc, a potem wystarczy ze odwolam sie do tego powiazania jak do elementu klasy, czy w zendzie tez da sie tak zrobic?

  8. siema napisał(a):

    Nie wiem czy dokładnie o to ci chodzi, ale zajrzyj do tematu “Dodatkowe metody na wierszach wyniki” w kategorii “baza danych” $_rowClass, może to po części jest odpowiedzią na twoje pytanie.

  9. WP napisał(a):

    @D.K
    Podstawowym założeniem “relacyjnych baz danych” są relacje między encjami, a nie to czy PK istnieje czy też nie.

  10. aloriourb napisał(a):

    Dzieki za ciekawe informacje