2010-12-28 14 views
1

私が選択し、次いますZendのDbを選択し、「AND」問題

$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 

私は必要ありませんし、それが空の場合、それ以外の私の結果は間違っています。

答えて

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); 
} 

その基地文を作成し、特定の条件()メソッドによって、後で拡張することができます。

+0

これは問題なく動作します。ありがとう – lander