Pertanyaan Cara membuat WHERE IN klausa dengan Zend_Db_Select


Jadi saya mencoba mencapai sesuatu seperti ini:

SELECT * FROM table WHERE status_id IN (1,3,4);

menggunakan Zend_Db_Select ... tidak dapat menemukan cara melakukannya :( Apakah itu mungkin?


60
2017-12-04 06:26


asal


Jawaban:


Anda juga dapat menggunakannya seperti ini:

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

Anda tidak perlu melakukan implode array, dan itu lebih aman


157
2017-12-12 12:28



ternyata itu sangat sederhana ... bodoh saya:

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

:(


8
2017-12-04 06:28



Jawaban pertama mungkin bekerja di ZF1 tetapi tidak berfungsi di Zend Framework 2:

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

Jika Zend Framework2 saya menemukan bahwa Anda harus menggunakan:

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

Hasil:

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

Saya tidak dapat menemukan ini didokumentasikan di mana saja! Dokumentasi ZF umumnya sub-optimal.


7
2017-09-27 09:45



This solution works well with zf2     
 $ids = array('1', '2', '3', '4', '5', '6', '7', '8');
 $select->where(array("app_post_id"=> $ids));

atau

 $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;

2
2018-04-02 12:58



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

1
2018-01-02 13:02



Kita bisa gunakan Zend\Db\Sql\Predicate\In dengan Zend\Db\Sql\Where untuk membuat sebuah dimana dalam permintaan di dalam model.

$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();

1
2018-02-19 07:07