Npr. ovo:
$sql = 'SELECT foo, bar FROM foobar WHERE foo = 3';
... ili ovo:
$sql = $this->db_handler->select()
->from('foobar', array('foo', 'bar'))
->where('foo = 3');
Naravno, ovaj drugi primer je u slučaju da se model ne izvodi iz Zend_Db_Table, već da ima instancu DB adaptera ($db_handler) kao člana klase...
E sad, mene zanima šta je bolje koristiti prvenstveno zbog performansi. Meni se nekako čini da je ova druga metoda samo jedan zaobilazan način da se stigne do upita, ali naravno, ima i ona svojih prednosti (sintaksno ispravni upiti, apstakcija nezavisna od tipa baze, zaštita od SQL Injection-a automatskim quote-ovanjem identifikatora i vrednosti, itd.). Ali ono što meni smeta je to što npr. nikako nije moguće formirati ovakav upit:
$sql = 'SELECT f.id, f.name, b.test, b.polje
FROM foo f, bar b
WHERE b.foo_id = f.id AND b.polje = 3';
Tačnije, nikako nije moguće da se u FROM kaluzuli koristi dve ili više tabela, već se forsiraju spajanja (join-ovi), pa bi se upit koji daje isti takav rezultat mogao dobiti jedino ovako:
$sql = $this->db_handler->select()
->from(
array('f'=>'foo '),
array(
'f.id',
'f.name',
'b.test',
'b.id',
'p.polje',
)
)
->joinInner(array('b'=>'bar'), 'b.foo_id = f.id', null)
->where('b.polje = 3');
Neka me neko ispravi ako grešim...
Da vas čujem...
