2012-06-14 15 views
5

मैं एक तालिका से चयन करने का प्रयास कर रहा हूं जहां प्रविष्टि अवधि के बराबर चयनित अवधि बराबर नहीं है।doctrine2 क्वेरी बिल्डर में ऑपरेटर कैसे जोड़ें, जहां कथन

[Syntax Error] line 0, col 226: Error: Expected =, <, <=, <>, >, >=, !=, got '%' 

यह सादा एसक्यूएल में काम करेगा:

$qb = $em->createQueryBuilder() 
->from('AcmeBlogBundle:Entry', 'e') 
->andWhere(":duration % e.duration = 0") 
->setParameter('duration', $duration); 

यह त्रुटि देता है। क्या कोई जानता है कि डॉक्टर के क्वेरी बिल्डर के साथ ऐसा कैसे करें?

+0

सही उत्तर है? – sensorario

उत्तर

9

प्रतीक % एक DQL ऑपरेटर नहीं है। इस प्रयास करें:

$qb = $em->createQueryBuilder() 
->from('AcmeBlogBundle:Entry', 'e') 
->andWhere("mod(:duration,e.duration) = 0") 
->setParameter('duration', $duration); 

या इस पढ़ें: http://docs.doctrine-project.org/projects/doctrine-orm/en/2.0.x/reference/dql-doctrine-query-language.html 12.5.1 पैरा।

MOD(a, b) - Return a MOD b. 
+0

सुझाव के लिए धन्यवाद लेकिन मोड क्वेरी में काम नहीं किया था। मैं फिर से प्रलेखन को देख रहा हूं और यह मॉड्यूलस सूचीबद्ध नहीं करता है और कहां बयान के भीतर कोई गणना इंगित नहीं करता है। मुझे दिखना होगा, लेकिन अच्छा विचार है। – Apot

+1

आप एक प्रतिभाशाली हैं। एमओएस (ए, बी) एक आकर्षण की तरह काम किया। आपका बहुत धन्यवाद! – Apot

+0

क्या आप इस उत्तर को सही के रूप में साइन कर सकते हैं? – sensorario

संबंधित मुद्दे