sql >> Databáze >  >> RDS >> Mysql

PHQL WHERE xxx IN () může získat pouze 1 data

Protože existuje několik příkladů práce s PDO i PHQL zde a zde který vyhovuje vašemu příkladu, v mechanismu Phalcon queryBuilder je možný ještě jeden přístup:

$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 metoda je dostupná pouze přes queryBuilder, pokud vím, a funguje úplně stejně jako zmíněné příklady PDO IN (?, ?, ?) . Ale nepotřebujete to implementovat ručně.

Můžete také přeskočit část vytváření PHQL a přejít přímo k vytvoření dotazu SQL, ale za cenu provádění vlastních ověření.

$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. Tlačítko Zpět pro jednostránkový web

  2. Jak získat poslední řádek na skupinu v PostgreSQL

  3. Více generátorů Hibernate sekvence pro jednu entitu s PostgreSQL

  4. InnoDB:Hromadné vložení pomocí transakce NEBO zkombinovat více dotazů?