सिद्धांत क्वेरीबिल्डर में अभिव्यक्ति mysql अब() अभिव्यक्ति का उपयोग कैसे करें?अभिव्यक्ति mysql अब() सिद्धांत में क्वेरी QuuBilder
उत्तर
Doctrine2 में आपको NOW()
के बजाय निम्नलिखित में से एक का उपयोग करना होगा।
यह:
CURRENT_TIMESTAMP()
या:
...
createQuery(...'WHERE x.date = :now')
->setParameter('now', new \DateTime('now'))
...
आप केवल समय या केवल तारीख उपयोग उन में से एक चाहते हैं: CURRENT_TIME()
और CURRENT_DATE()
का उपयोग करना क्वेरी बिल्डर इसे इस तरह दिखेगा:
$qb
->select('B')
->from('RandomBundle:Banana', 'B')
->where(
$qb->expr()->gt('B.expiresAt', ':now')
)
->setParameter('now', '\'CURRENT_TIMESTAMP()\'');
नोट: पैरामीटर सेट पर अतिरिक्त उद्धरण आवश्यक पाने के लिए CURRENT_TIMESTAMP()
समारोह काम कर रहे है।
या बस
$qb
->select('B')
->from('RandomBundle:Banana', 'B')
->where(
$qb->expr()->gt('B.expiresAt', 'CURRENT_TIMESTAMP()')
);
दूसरे उदाहरण में, आप क्वेरी बिल्डर अभिव्यक्ति – Clamburger
का उपयोग करने के बजाय 'कहां' कॉल के अंदर सीधे 'BexpiresAt> CURRENT_TIMESTAMP() 'तुलना का उपयोग कर सकते हैं, मुझे लगता है कि यह डेटाबेस के समय का उपयोग करना चाहता था, कुछ फ्रंटेंड वेब नहीं सर्वर की। वैकल्पिक विकल्प [परिणामसेट मैपर/मूल क्वेरी] (http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/native-sql.html) का उपयोग करना है, या सिद्धांत का विस्तार करना है और अपना खुद का सिद्धांत \ ORM \ क्वेरी \ AST \ Functions लिखें। – ficuscr
प्रलेखन लिंक रिपोर्ट नहीं मिला, अपडेट करें। – wesamly
यह CURRENT_TIMESTAMP() चीज़ ने मेरे लिए कभी काम नहीं किया है। क्या आप इसका उदाहरण दे सकते हैं कि इसका उपयोग कैसे किया जाता है? मैं वेब सर्वर के समय, बल्कि डेटाबेस का उपयोग नहीं करना चाहता। मैं हमेशा कच्चे एसक्यूएल (अभी भी बाध्यकारी पैरा) लिख रहा हूं और क्वेरी बिल्डर से गुजर रहा हूं। – ficuscr
यह भी ध्यान दें कि 'डेटटाइम' के लिए 'अब' डिफ़ॉल्ट पैरामीटर है, इसलिए 'नया \ DateTime() 'पर्याप्त है। –