我有以下选择:
$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,否则我的结果是错误的。
答案 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()方法在特定条件下进行扩展。