Zend Framework sorgu dizesi eklemek

2 Cevap php

Diyelim ki var diyelim:

$query = $this->select()
              ->where('name LIKE ?','%something%');
              ->where('section LIKE ?','%something%');
              ->where('cars LIKE ?','%something%');
              ............
              ............

Sen noktası olsun!

Ama sorguya yerde () yan eklemek istiyorsanız yalnızca .. $ x = 0 diyelim; böyle bir şey:

$select = $this->select();
if($x == 0):
//add to the $this->select(); so it will be $this->select()->where('section LIKE   ?','%something%');
 $select->where('section LIKE ?','%something%');
endif;

if($x == 0):
/*add to the $this->select(); so it will be 
$this->select()->where('section LIKE  ?','%something%')
->where('cars LIKE ?','%something%');
*/
 $select->where('cars LIKE ?','%something%');
endif;

Tabii ki, bu şey işe yaramazsa ama ben yapmak istiyorum ne anladım sanırım!

Saygılarımızla,

2 Cevap

Eğer $ db referans sadece fetchAll çağıran () önceden ve daha sonra manuel olarak SQL sorgu dize bina düşündünüz mü?

$SQL = 'SELECT * from blah, ';
if($x == 0):
    //add to the $this->select(); so it will be $this->select()->where('section LIKE   ?','%something%');
    $SQL = $SQL . "WHERE blah");
endif;

if($x == 1):
    $SQL = $SQL . "WHERE blah");
endif;

$db = Zend_Db_Table::getDefaultAdapter();
$this->view->leaguetable = $db->fetchAll($SQL);

Zend_DB.select () bir sql sorgu deyimi döndürür

$select = $this->select();

ancak koşullu select () yöntemi sonra nesneye hükümler bittikten nerede ek kontrol edemez. Bu bir ekleme işlemi değil.

$select = $this->select();
if($x == 0):
 $select->where('section LIKE ?','%something%');
endif;

Sorun eğer fıkra, yerine görünüyor

$x = 0

İstediğiniz

$x == 0

The former is assigning 0 to $x in the if clause, which is almost never what İstediğiniz.