Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

PHQL जहां xxx IN () को केवल 1 डेटा मिल सकता है

चूंकि पीडीओ और पीएचक्यूएल दोनों के साथ काम करने वाले कुछ उदाहरण हैं यहां और यहां यह आपके उदाहरण के अनुकूल है, फाल्कन क्वेरीबिल्डर तंत्र में एक और दृष्टिकोण संभव है:

$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 जहां तक ​​​​मुझे पता है, विधि केवल queryBuilder के माध्यम से उपलब्ध है और यह ठीक उसी तरह से काम करती है जैसे उल्लेखित PDO उदाहरण IN (?, ?, ?) . लेकिन आपको इसे हाथ से लागू करने की आवश्यकता नहीं है।

आप PHQL बनाने के भाग को छोड़ भी सकते हैं और SQL क्वेरी बनाने के लिए सीधे ड्राइव कर सकते हैं, लेकिन स्वयं सत्यापन करने की लागत पर।

$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. क्या max_allowed_packet को बदले बिना mysql DB में बड़ा मान डालने का कोई तरीका है?

  2. MySQL कई मानों की तरह

  3. अजगर में गलत स्ट्रिंग मान+django+Mysql

  4. पुनर्निर्माण पर प्रारंभिक डेटा डालने वाला इकाई फ्रेमवर्क

  5. MySQL में SELECT ... FOR UPDATE का उपयोग करके डेडलॉक