charzak
15.04.2016, 10:15:42
Hej, mam projekt liczący 35 tabel, dojdzie jeszcze ok 25. Projekt robie wg wzorca mvc i w połowie pracy zacząłem się zastanawiać nad organizacją modeli, czy z waszego doświadczenia powinno się zrobić do każdej tabeli 1 model czy lepiej 1 model do pewnego zbioru, np 5 tabel, które razem tworzą komplet danych?
Crozin
15.04.2016, 10:22:38
Opisz dokładniej co masz na myśli pisząc "zrobić 1 model" oraz czym są te tabele (baza danych?). Rzuć może jakiś kodem.
charzak
15.04.2016, 10:41:45
mysql, weźmy pod lupę galerię:
tabele:
-ads
-ads_has_gallery
-gallery
-gallery_images
opis
dodając ogłoszenie (ads) dodajemy galerię (gallery), gdy galeria jest dodana dodajemy obrazki galerii (gallery_images), gdy gallery i gallery_images są pomyślnie dodane, dodajemy je do ogłoszenia ads_has_gallery
model ads
-insert ads
-insert adsHasGallery
model gallery
-insert
-delete
model galleryImages
-insert
-delete
-getByAdId($adId) - pobiera obrazki galerii wg id ogłoszenia
czy np lepiej:
model ads
-insert ads
model gallery
-insert gallery
-insert galleryImages
-insert adsHasGallery
-delete gallery
-delete galleryImages
-getByAdId
może i zbędne pytanie ale chciałbym to zrobić dobrze
Pyton_000
15.04.2016, 11:02:37
Tutaj trochę pomyliłeś pojęcia

Model - odzwierciedlenie tabeli czyli 1 Model == 1 Tabela
Repozytorium - Obiekt zarządzający danymi pochodzącymi z modelu. Czyli to co Ty podałeś jako "Grupę modeli" to może być właśnie repozytorium.
charzak
15.04.2016, 11:28:21
fakt pomieszałem pojęcia, czyli lepiej 1 obiekt zarządzający danymi z modeli czy kilka mniejszych? czy to już bez znaczenia?
a może tak:
$gallery = new Gallery();
$gallery->setImages (new Images());
$gallery->insert();
$gallery->images->insert()
$ads = new Ads()
$ads->setGallery (new Gallery())
$ads->gallery->getById();
Pyton_000
15.04.2016, 11:50:32
Nie, Model to model. Czyli Wrapper na źródło danych. Gallery równie dobrze może być Tabelą w BD, plikiem, CSV, obiektem cache w Redis itd.
Repozytorium jest tym co chcesz. To Tam robisz operacje na źródłach danych.
markonix
15.04.2016, 12:58:29
Robiłem kiedyś właśnie tak, że modelem było kilka tabel i metod ich dotyczących np. orders + order_item.
Teraz tego bardzo żałuje się i z tego spowiadam gdy robię $this->order_model->get() i "nie wiem" czy dostanę zamówienie czy konkretny item z zamówienia pod ID.
Oczywiście ja wiem, a kod jest udokumentowany ale mimo to zaburza to klarowność kodu.
charzak
21.04.2016, 16:22:55
dzięki za pomoc
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.