帮助在Zend中构建简单的SQL查询
问题描述:
我的SQL查询基于提供的数据。帮助在Zend中构建简单的SQL查询
例如:
// table
$table = new Model_MyTable_DbTable();
// data
$columns = array('column1', 'column2', 'column3');
// query
$select = $table->select();
$select->where('deleted = ?', '0');
for($i = 0; $i < count($columns); $i++) {
if($i == 0) {
$select->where($columns[$i] . ' > ?', '0');
} else {
$select->orWhere($columns[$i] . ' > ?', '0');
}
}
$select->where('disabled = ?', '0');
// print query
echo $select->assemble();die();
以上代码的结果为以下查询:
SELECT `mytable`.* FROM `mytable` WHERE
(deleted = '0') AND
(column1 > '0') OR (column2 > '0') OR (column3 > '0') AND
(disabled = '0')
但我想是这样的:
SELECT `mytable`.* FROM `mytable` WHERE
(deleted = '0') AND
(column1 > '0' OR column2 > '0' OR column3 > '0') AND
(disabled = '0')
这怎么可能?
感谢
答
我想这应该做的工作:
// table
$table = new Model_MyTable_DbTable();
// data
$columns = array('column1', 'column2', 'column3');
// query
$select = $table->select();
$select->where('deleted = ?', '0');
$myOrParts = array();
for ($i = 0; $i < count($columns); $i++) {
$myOrParts []= $table->getAdapter()->quoteInto($columns[$i] . ' > ?', '0');
}
$myWhere = implode(' OR ', $myOrParts);
$select->where(new Zend_Db_Expr($myWhere));
$select->where('disabled = ?', '0');
// print query
echo $select->assemble();
die();
是。取得了理想的结果 – Student 2011-05-20 12:00:06