यह वास्तव में एक बहुत ही आम सवाल है। यह पता चला है कि सभी एसक्यूएल डेटाबेस एक DATE फ़ंक्शन का समर्थन नहीं करते हैं, इसलिए सिद्धांत के प्रभारी अच्छे लोगों ने इसका समर्थन करने का फैसला नहीं किया।
उनकी इच्छा की इच्छा है क्योंकि इससे लोगों का एक समूह काफी प्रयास करेगा।
doctrine:
orm:
default_entity_manager: default
auto_generate_proxy_classes: %kernel.debug%
entity_managers:
default:
connection: default
...
dql:
datetime_functions:
date: Cerad\Bundle\CoreBundle\Doctrine\DQL\Date
http://doctrine-orm.readthedocs.org/en/latest/cookbook/dql-user-defined-functions.html http://symfony.com/doc/current/cookbook/doctrine/custom_dql_functions.html http://symfony.com/doc/current/reference/configuration/doctrine.html
:
namespace Cerad\Bundle\CoreBundle\Doctrine\DQL;
use Doctrine\ORM\Query\Lexer;
use Doctrine\ORM\Query\AST\Functions\FunctionNode;
class Date extends FunctionNode
{
public $date;
public function getSql(\Doctrine\ORM\Query\SqlWalker $sqlWalker)
{
return "DATE(" . $sqlWalker->walkArithmeticPrimary($this->date) . ")";
}
public function parse(\Doctrine\ORM\Query\Parser $parser)
{
$parser->match(Lexer::T_IDENTIFIER);
$parser->match(Lexer::T_OPEN_PARENTHESIS);
$this->date = $parser->ArithmeticPrimary();
$parser->match(Lexer::T_CLOSE_PARENTHESIS);
}
}
तो यह अपने अनुप्रयोग/config.yml के सिद्धांत अनुभाग में तार:
तो अपनी परियोजना के लिए इस बल्कि जादुई वर्ग को जोड़ने
अधिक एसक्यूएल कार्यों के साथ वहां अन्य बंडल हैं। विचित्र रूप से पर्याप्त, पहली बार मैंने कुछ साल पहले देखा, उनमें से कोई भी तिथि परिभाषित नहीं किया गया था। तो मैंने अभी अपना खुद का बना दिया।
============================================== ======================
अद्यतन 01
मैं टैग ध्यान से जाँच करें और मान लिया है कि यह एक Symfony 2 आवेदन नहीं हो सका। तिथि वर्ग वही रहता है। आप सिद्धांत कॉन्फ़िगरेशन ऑब्जेक्ट प्राप्त करके इसे तारित करते हैं।
$config = new \Doctrine\ORM\Configuration();
$config->addCustomDatetimeFunction('DATE', 'blahblah\Date');
विवरण के लिए सिद्धांत लिंक देखें।
संभव डुप्लिकेट [सिद्धांत 2 - एक datetime क्षेत्र की तारीख हिस्सा द्वारा परिणाम फ़िल्टर करें] (http://stackoverflow.com/questions/10824383/doctrine-2 -फिल्टर-परिणाम-दर-ए-डेटाटाइम-फ़ील्ड-डेट-पार्ट) – andy
@andy कोई डुप्लिकेट नहीं है। मैं ** querybuilder ** का उपयोग कर रहा हूं और 'createQuery' और 'querybuilder' का उपयोग कर त्रुटि संदेश समान है:' त्रुटि: अपेक्षित ज्ञात फ़ंक्शन, 'DATE' प्राप्त हुआ। – DanFromGermany
एरो एक जैसा है क्योंकि DQL में कोई 'DATE() 'नहीं है। यदि आप लिंक किए गए डुप्लिकेट से WHERE क्लॉज का उपयोग करते हैं, तो आपके दृष्टिकोण को भी काम करना चाहिए। – andy