Zend Framework запрос, добавить в строку - PullRequest
0 голосов
/ 13 января 2010

скажем, что у меня есть:

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

Вы получаете очко!

Но я хочу добавить предложение where () в запрос, скажем, если .. $ x = 0; как то так:

$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;

Конечно, эта штука не работает, но я думаю, вы поняли, что я хочу сделать!

С наилучшими пожеланиями,

Ответы [ 2 ]

2 голосов
/ 13 января 2010

Рассматривали ли вы заранее создание строки запроса SQL, а затем просто вызываете fetchAll () для своей ссылки в $ db?

$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 () возвращает оператор SQL-запроса

$select = $this->select();

но вы не можете условно контролировать добавление предложений where к объекту после завершения метода select (). Это не операция добавления.

$select = $this->select();
if($x == 0):
 $select->where('section LIKE ?','%something%');
endif;
0 голосов
/ 13 января 2010

Кажется, что проблема - это ваше условие if, а не

$x = 0

хочешь

$x == 0

Первый присваивает от 0 до $ x в предложении if, что почти никогда не соответствует вашим ожиданиям.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...