2008-11-03 9 views
5

में MySQL फ़ंक्शंस का उपयोग कैसे करें मैं 1 महीने या उससे अधिक के रिकॉर्ड चुनना चाहता हूं।प्रोपेल

क्वेरी है: foobar से चुनें * कहां created_at> DATE_SUB (curdate(), अंतराल 1 माह)

Symfony में प्रोपेल का उपयोग करना, मैं करता हूँ:

$ ग = नए मानदंड
$ सी-> जोड़ें (FoobarPeer :: CREATED_AT, "DATE_SUB (curdate(), अंतराल 1 महीने)", मानदंड :: GREATER_THAN);

क्या प्रोपेल उत्पन्न करता है: foobar कहां created_at> 'DATE_SUB (curdate(), अंतराल 1 माह) से चयन करें * - दूसरे शब्दों में, यह MySQL समारोह एकल उद्धरण में डालता है, जो इसे एक (अर्थहीन बना देता है) स्ट्रिंग और मुझे कोई रिकॉर्ड नहीं मिला।

मैं अब के लिए क्या किया है है:

$ ग> जोड़ने (FoobarPeer :: created_at, "created_at> DATE_SUB (curdate(), अंतराल 1 माह)", मानदंड :: कस्टम) ;

लेकिन मैं कस्टम वर्कअराउंड का उपयोग नहीं करना चाहता हूं जब तक कि मुझे नहीं करना चाहिए। मानदंड :: कस्टम का उपयोग करने के अलावा कोई संकेत?

$con = Propel::getConnection(DATABASE_NAME); 

$sql = "SELECT foobar.* FROM foobar WHERE created_at > DATE_SUB(curdate(), INTERVAL 1 MONTH)"; 
$stmt = $con->prepare($sql); 
$stmt->execute(); 

$books = FoobarPeer::populateObjects($stmt); 

ऐसा इसलिए है क्योंकि प्रोपेल डीबीएमएस-नास्तिक होने का प्रयास करता है, एक सरल करके प्रवास मदद करने के लिए:

+0

चूंकि इस प्रश्न का उत्तर देने के बाद से प्रोपेल बहुत विकसित हुआ है, यहां कुछ विचार (प्रोजेक्ट प्रोजेक्ट लीडर द्वारा लिखित) हैं, यह बताते हुए कि यह ओआरएम या कच्चे एसक्यूएल का उपयोग करने के लिए प्रासंगिक है: http: //propel.posterous। com/how-can-i-write-this-query-use-an-orm –

उत्तर

2

मैं वहाँ लगता है कोई विकल्प नहीं मानदंड :: कस्टम का उपयोग कर या इस तरह एक कस्टम SQL क्वेरी कर की तुलना में अधिक है कॉन्फ़िगरेशन मान परिवर्तन, इसलिए इसमें कोई भी डीबीएमएस विशिष्ट फ़ंक्शंस नहीं है।

1

बस उस माइस्क्ल तिथि कोड को प्रतिस्थापित करें जिसका उपयोग आप एक पूर्ववर्ती PHP चर के साथ कर रहे हैं जिसमें उस तारीख में पहले से ही है।

अर्थात

$monthAgo = '2008-10-03'; 
$c = new Criteria 
$c->add(FoobarPeer::CREATED_AT, $monthAgo, Criteria::GREATER_THAN); 

जाहिर है, आप गतिशील तारीख php में, बल्कि मुश्किल यह कोडिंग से गणना करना चाहिए, लेकिन आप चित्र मिलता है।

+0

हां मैं कर सकता था, लेकिन मैं बजाय mysql फ़ंक्शंस का उपयोग करूंगा - php की तारीख अंकगणित के लिए कमजोर समर्थन है। –

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