2012-04-06 9 views
6

मैं यहां फंस गया हूं और मैं इस मुद्दे को हल करने में पिछले 2 दिन बिताता हूं लेकिन असफल रहा। मैं वर्तमान माह के लिए प्रविष्टियां प्राप्त करने के लिए अपने भंडार के अंदर एक प्रश्न लिख रहा हूं। यह मुझे एक त्रुटिइंटरवल 1 महीने काम नहीं कर रहा symfony2 सिद्धांत के साथ?

[Syntax Error] line 0, col 133: Error: Expected Doctrine\ORM\Query\Lexer::T_COMMA, got '1' 

मुझे भी this thing की कोशिश की लेकिन मुझे मदद नहीं की थी देता

$this->getEntityManager() 
->createQuery('SELECT count(a) FROM CollegeStudentBundle:StudentAttendance a where a.student_id='.$id.' 
and a.date > DATE_SUB(CURRENT_TIMESTAMP(),INTERVAL 1 MONTH)') 

जब मैं इस चलाने का प्रयास: - यहाँ मेरी क्वेरी है।

उत्तर

24

आप पैरामीटर बाध्यकारी उपयोग करना चाहिए:

$query = $em->createQuery('SELECT count(a) FROM CollegeStudentBundle:StudentAttendance a where a.student_id = :id and a.date > :date'); 
$query->setParameter('id', $id); 
$query->setParameter('date', new \DateTime('-1 month')); 
+0

बहुत बहुत धन्यवाद jkucharovic। यह बहुत उपयोगी था। क्या आप मुझे बता सकते हैं कि मैं इंटरवल 1 साल – ScoRpion

+0

'$ क्वेरी-> सेट पैरामीटर ('तिथि', नया \ दिनांक समय ('- 1 वर्ष')) के साथ ऐसा कैसे कर सकता हूं;' – jkucharovic

+0

और क्या आप बता सकते हैं कि अब मैं कैसे उपयोग कर सकता हूं यहां – ScoRpion

7

आपको याद रखना होगा कि डीक्यूएल एसक्यूएल नहीं है। त्रुटि Doctrine's Lexer से आता है और MySQL से नहीं। डीक्यूएल इंटरवल का समर्थन नहीं करता है (list of supported functions देखें)।

के बारे में अधिक adding your own functions पढ़ें, विशेष रूप से INTERVAL समर्थन यहाँ के साथ DATE_ADD जोड़ने: http://doctrine-orm.readthedocs.org/projects/doctrine-orm/en/latest/cookbook/dql-user-defined-functions.html#date-add

+1

यह स्वीकार किए जाते हैं जवाब होना चाहिए। –