2014-10-07 9 views
11

मैं या $locked क्षेत्र के लिए मैन्युअल तो मैं @ORM एनोटेशन में के रूप में डिफ़ॉल्ट सौंपा लेकिन यह काम नहीं करता है में प्रवेश करने से बचने के लिए कोशिश कर रहा हूँ प्रश्नों जैसा कि अपेक्षित है इसलिए मुझे नीचे त्रुटि मिल रही है। हालांकि मैं options={"default"=0} इसे संभाल लेगा लेकिन ऐसा प्रतीत होता है क्योंकि यह इसे संभाल नहीं करता है!सेटिंग डिफ़ॉल्ट मान

क्या डिफॉल्स द्वारा 0 को असाइन करने का कोई तरीका है ताकि INSERT कथन विफल न हो?

नोट: मैं इसे एक prePersist() विधि, __construct() या $locked = 0; इतने पर लेकिन क्या मैं में दिलचस्पी रखता हूँ @ORM एनोटेशन हल है के साथ सुलझा सकते हैं।

यदि @ORM एनोटेशन इसे संभाल नहीं पाता है तो options={"default"=0} होने का क्या मतलब है क्योंकि यह डेटाबेस में फ़ील्ड डिफ़ॉल्ट मान को चिह्नित करता है? नीचे छवि देखें।

enter image description here

त्रुटि:

DBALException: An exception occurred while executing "INSERT INTO user (username, locked) VALUES (?, ?)" with params ["username", null]: 
SQLSTATE[23000]: Integrity constraint violation: 1048 Column "locked" cannot be null 

उपयोगकर्ता इकाई:

/** 
* @var boolean 
* @ORM\column(type="boolean", options={"default"=0}) 
*/ 
protected $locked; 

नियंत्रक:

$user: new USer(); 
$user->setUsername('username'); 
$em->persist($user); 
$em->flush(); 

उत्तर

21

यह सब है कि आप की जरूरत है:

/** 
* @var boolean 
* @ORM\column(type="boolean") 
*/ 
protected $locked = 0; 

या:

/** 
* @var boolean 
* @ORM\column(type="boolean") 
*/ 
protected $locked = false; 

अद्यतन

सिद्धांत के माध्यम से कॉलम में डिफ़ॉल्ट मान सेट करने का समर्थन नहीं करता एसक्यूएल में "डिफॉल्ट" कीवर्ड।

http://docs.doctrine-project.org/en/latest/reference/faq.html#how-can-i-add-default-values-to-a-column

+0

जहाँ तक मुझे पता के रूप में वहाँ कोई एनोटेशन कि संभालती है। – dmnptr

+2

'@ORM \ कॉलम (प्रकार =" बूलियन ", विकल्प = {" डिफ़ॉल्ट "= झूठा} आज़माएं)'। क्या वह ऐसा करेगा? – dmnptr

+0

नहीं, यह भी नहीं है। – BentCoder

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