2008-12-04 8 views

Répondre

153

vous pouvez également l'utiliser comme ceci:

vous ne avez pas besoin de tableau imploser, et il est plus sûr

+12

Googled ce problème et trouvé votre solution - puis réalisé que je l'avais déjà upvoted une fois. Donc, puisque je ne peux pas vous re-vendre, prenez ce commentaire comme mon gage d'appréciation! – leek

+0

super, merci beaucoup :) –

+0

Autant de variations sur les paramétrages INs, merci de m'avoir sauvé une soirée d'utilisation de google glopping! –

8

apparemment il est super simple ... me stupide:

$select->where('status_id IN(1,3,4)'); 

:(

+0

Oui, c'est vrai. –

1
$completionNo = implode(",",$data); 

$db = Zend_Db_Table_Abstract::getDefaultAdapter(); 
$select = $db->select()->from(array("p"=>PREFIX . "property_master"),array('id','completion_no','total_carpet_area'))->where("p.completion_no IN (?)", $completionNo); 
6

La première réponse fonctionne probablement dans ZF1 mais il ne fonctionne pas dans Zend Framework 2:

En cas le Zend Framework2 j'ai découvert que vous devez utiliser:

$data = array(1,3,4); 
$select->where(array('status_id' => $data)); 

Résultat:

WHERE `status_id` IN ('1', '3', '4') 

Je ne pouvais pas trouver ce documenté partout! La documentation ZF est généralement sous-optimale.

+0

Oui, je peux confirmer que la première réponse: $ select-> where ('status_id IN (?)', $ Data); fonctionne vraiment en ZF1 – Vlado

1

Nous pouvons utiliser Zend\Db\Sql\Predicate\In avec Zend\Db\Sql\Where pour faire un où dans requête à l'intérieur d'un modèle.

$this->status_ids = array(1,3,4); 

// select attributes from db by where in 
$result = $this->select(function (Select $select) { 
    $predicate = new In(); 
    $select->where(
     $predicate->setValueSet($this->status_ids) 
       ->setIdentifier('status_id') 
    ); 
})->toArray(); 
Questions connexes