Cachovaná hodnot v šablone/selectu z db
- jasin755
- Člen | 116
Zdravím, řeším menší problém s nechtěným Cachováním. Z modelu
pomoci této syntaxe:
$where = array(
‚cas > ?‘ ⇒ $time,
‚datum >= ?‘ ⇒ $date
);
return
$this->db->table(‚programy‘)->where($where)->group(‚program‘)->limit(4);
Získám potřebné hodnoty a předám je presenterovi a následně do šablony. Funguje to tak, že to vybírá hodnoty dynamicky podle toho „jaký je čas“, ale ve výsledku je to zaseknuté na prvním SELECTu. V laděnce vidím 1 query.
Viz. http://ukol.sound-agency.cz
Dá se nějak vyřešit, aby se tenhle SELECT z DB necachoval ?
Děkuji moc.
- Jan Mikeš
- Člen | 771
$this->db->table("programy")->select("sloupec1, sloupec2, sloupec3")->where($where)->group(‚program‘)->limit(4);
Tyto sloupce se ti vyselektujou vzdy, at uz je pouzijes nebo ne. Dale je treba davat pozor, ze se ti vyselektuji pouze tyto sloupce a ne zadne jine, pokud treba budes chtit pracovat se sloupcem id ale neuvedes ho tam, pak ti to bude vyhazovat PDOException.
Edit: cache bez uvedeni ->select() zde totiz funguje tak, ze pri prvnim zavolani se vyberou vsechny sloupce tabulky a pri druhem zavolani uz jenom ty, ktere byly pouzity. Pri ->select() si urcujes sam co se bude volat vzdy.
Editoval Lexi (23. 3. 2013 17:26)
- jasin755
- Člen | 116
Tak bohužel je někde ještě zádrhel. Mám tam dynamickou podmínku WHERE, která se mění podle času a v laděnce se dívám a je zasekla na nějaké hodnotě. Když ji ručně přepíšu, tak to funguje, jinak ne.
public function get_programs(){
$time = (int)date("Hm",time()); // 05:00 => 500
$date = date("Y-m-d",time()); //23.03.2013
$where = array(
'cas > ?' => $time,
'datum >= ?' => $date
);
return $this->db->table("programy")->select("program,datum,cas,nazev,zanr,stopaz,popis,obrazek,ivysilani,zvuk,titulky,neslysici,live,premiera,pomer,hd")->where($where)->order("cas")->group("program")->limit(4);
}