Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

PHQL WHERE xxx IN () hanya bisa mendapatkan 1 data

Karena ada beberapa contoh yang bekerja dengan PDO dan PHQL di sini dan di sini yang sesuai dengan contoh Anda, ada satu pendekatan lagi yang mungkin dilakukan dalam mekanisme queryBuilder Phalcon:

$builder = $this->modelsManager->createBuilder();
$builder->addFrom('Application\Entities\KeywordsTrafficReal', 'tr')
        ->leftJoin('Application\Entities\Keywords', 'kw.id = tr.keyword_id', 'kw')
        ->inWhere('keyword_id', self::$keywords) // <<< it is an array!
        ->betweenWhere('traffic_date', self::$daterange['from'], self::$daterange['to']);

inWhere metode ini hanya dapat dijangkau melalui queryBuilder sejauh yang saya tahu dan cara kerjanya persis sama seperti contoh PDO yang disebutkan IN (?, ?, ?) . Tetapi Anda tidak perlu menerapkannya secara manual.

Anda juga dapat melewatkan bagian dari pembuatan PHQL dan mengarahkan langsung untuk membuat kueri SQL, tetapi dengan biaya membuat validasi sendiri.

$realModel = new KeywordsTrafficReal();

$sql = sprintf('SELECT * '
            .  'FROM keywords_traffic_real tr '
            .  'LEFT JOIN keywords kw '
            .  'ON kw.id = tr.keyword_id '
            .  'WHERE tr.keyword_id IN(%s) '
            .  "AND traffic_date BETWEEN '%s' AND '%s' ",
        join(',', self::$keywords), self::$daterange['from'], self::$daterange['to']);

$results = new \Phalcon\Mvc\Model\Resultset\Simple(null, $realModel, $realModel->getReadConnection()->query($sql));



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dapatkan tanggal pertama dan terakhir bulan depan di MySQL

  2. Kesalahan sintaks MySQL:dekat '1' di baris 1

  3. Praktik Terbaik untuk Merancang Peran Pengguna dan Sistem Izin?

  4. Bagaimana cara membatalkan operasi INSERT di pemicu MySql?

  5. MySQL Jika pernyataan Tanggal?