Zend Db选择“AND”问题

时间:2010-12-28 10:25:27

标签: php zend-framework

我有以下选择:

$select = self::getConnection()->select()
                           ->setSqlCalcFoundRows(true)
                           ->from(array('person' => parent::$_prefix . self::$_tableName), $rows)
                           ->where($wherePerson['statement'], $wherePerson['value'])
                           ->where($whereOwner['statement'], $whereOwner['value'])
                           ->order($sort .' '. $sortDir)
                           ->limit($limit, $offset);

现在我想添加一个额外的AND。但仅当字段具有值(由用户完成)时。 因此,当所有者字段为空时,可能不是我查询的结果(请参阅AND):

SELECT SQL_CALC_FOUND_ROWS xxx
FROM xxxx AS xxxx
WHERE (person_id = '305000270002')
  AND (owner = '')
ORDER BY xxxx ASC
LIMIT 25

如果它是空的,我不需要AND,否则我的结果是错误的。

1 个答案:

答案 0 :(得分:4)

尝试以下方法:

$select = self::getConnection()->select()
                               ->setSqlCalcFoundRows(true)
                               ->from(array('person' => parent::$_prefix . self::$_tableName), $rows)
                               ->where($wherePerson['statement'], $wherePerson['value'])
                               ->where($whereOwner['statement'], $whereOwner['value'])
                               ->order($sort .' '. $sortDir)
                               ->limit($limit, $offset);

if (false === empty($theFieldToCheck)) {
    // add additional WHERE part if
    // a field IS NOT empty
    $select->where($additionalWherePart);
}

创建该基本语句,稍后可以通过where()方法在特定条件下进行扩展。