Vytvorenie vlastneho modelu
- ricco24
- Člen | 141
Chcem sa spýtať vážne začiatočnícku otázku –
Kedy je potrebné vytvárať vlastný model. Napríklad keď by som chcel v administrácii editovať stránky potreboval by som si vytvoriť vlastný model takto ?
private $page = NULL;
public function getModel() {
if (!isset($this->page)) {
$this->page = new Page();
}
return $this->page;
}
A do modelu Page by som písal potom db príkazy.
Alebo netreba vytvoriť vlastný model a všetky db dotazy môžem napísať
rovno do BaseModelu ktorý nemá construct ?
Editoval ricco24 (10. 6. 2011 8:48)
- Filip Procházka
- Moderator | 4668
Co jsi napsal, je asi nejlepší postup pro začátečníky. Kód co jsi uvedl, vložit do příslušného Presenteru. A co nejvíce SQL dotazů a logiky cpát do modelu.
Ještě bych doporučil doplnit annotaci a „správně pojmenovat“
/** @var Pages */
private $pages; // nastavovat na null neni potřeba
/**
* @return Pages
*/
public function getPages()
{
if ($this->pages === NULL) {
$this->pages = new Pages();
}
return $this->pages;
}
Takto ti bude IDE i našeptávat metody :)
- ricco24
- Člen | 141
Este si to ale chcem ujasniť.
Ak si vytvorim model napr. Stranky – aky je rozdiel medzi tym ze do tohto modelu umiestnim funkciu _construct
public function __construct($arr = array()) {
parent::__construct($arr);
}
a potom ho vytvorim v prezenteri pomocou
private $page = NULL;
public function getModel() {
if (!isset($this->page)) {
$this->page = new Page();
}
return $this->page;
}
A medzi tym ak vytvorim model „Stranky“ bez funkcie _construct a v prezenteri model nevytvorim?
Jediný rozdiel ktorý som ja zatial zanamenal je ten ze mám sql dotazy tykajuce sa jednotlivych classov „pod jednou strechou“.
V prvom prípade sa k sql dotazom dostanem pomocou
$this->model->xxx
a v druhom pomocou
Stranky::xxx
Chápem to správne alebo som úplne mimo ?
- Filip Procházka
- Moderator | 4668
Rozhodně o tom přestaň uvažovat jako o „SQL příkazech“. Protože ty je tam sice napíšeš, ale když už tam jsou, tak je pro tebe model logický celek, který něco obsluhuje a né hromádka sql příkazů.