Also versuche ich so etwas zu erreichen:
SELECT * FROM table WHERE status_id IN (1,3,4);
mit Zend_Db_Select ... kann nicht finden, wie es geht :( Ist es überhaupt möglich?
zend-framework
zend-db
Xelurg
quelle
quelle
Die erste Antwort funktioniert wahrscheinlich in ZF1, aber in Zend Framework 2 nicht:
$data = array(1,3,4); $select->where('status_id IN(?)', $data);
Für das Zend Framework2 habe ich herausgefunden, dass Sie Folgendes verwenden müssen:
$data = array(1,3,4); $select->where(array('status_id' => $data));
Ergebnis:
WHERE `status_id` IN ('1', '3', '4')
Ich konnte das nirgendwo dokumentiert finden! Die ZF-Dokumentation ist im Allgemeinen nicht optimal.
quelle
anscheinend ist es super einfach ... dumm von mir:
$select->where('status_id IN(1,3,4)');
:(
quelle
Wir können
Zend\Db\Sql\Predicate\In
mit verwendenZend\Db\Sql\Where
, um eine Where-in- Abfrage innerhalb eines Modells zu erstellen.$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();
quelle
This solution works well with zf2 $ids = array('1', '2', '3', '4', '5', '6', '7', '8'); $select->where(array("app_post_id"=> $ids));
oder
$ids = array('1', '2', '3', '4', '5', '6', '7', '8'); $sql = new Sql($this->adapter); $select = $sql->select(); $select->from('app_post_comments'); $select->where(array("app_post_id"=> $ids)); // echo $select->getSqlString($this->adapter->getPlatform()); // exit; $statement = $sql->prepareStatementForSqlObject($select); $result = $statement->execute(); $resultSet = new ResultSet(); $resultSet->initialize($result); $resultSet->buffer()->toArray(); echo '<pre>'; print_r($resultSet); exit; return $resultSet;
quelle
$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);
quelle