2014-10-07 28 views
11

Ben veya $locked alan için çalışmıyor ancak elle yüzden @ORM ek açıklamalarda olarak varsayılan atanan girmeyi önlemek çalışıyorum sorgular beklendiği gibi, aşağıdan hata alıyorum. options={"default"=0} bununla başa çıksa da, bununla başa çıkmadığı anlaşılıyor!Ayar varsayılan değer

INSERT ifadesinin başarısız olmaması için varsayılan olarak 0 atamasının bir yolu var mı?

Not: Ben prePersist() yöntemle, __construct() veya $locked = 0; vb ama ne ilgileniyorum @ORM açıklama çözümdür ile çözebiliriz.

@ORM ek açıklamaları işlenemiyorsa, veritabanındaki varsayılan değerleri işaretlediğinden options={"default"=0} olması gereken nokta nedir? Aşağıdaki resme bakın.

enter image description here

Hata:

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 

Kullanıcı Varlık:

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

Kontrolör:

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

cevap

21

İhtiyacınız:

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

ya:

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

GÜNCELLEME

Doktrini yoluyla sütunlarda varsayılan değerleri ayarlamak için desteklemez

SQL'de “DEFAULT” anahtar sözcüğü.

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

+0

olarak bildiğim kadarıyla bu işler hiçbir açıklama yoktur. – dmnptr

+2

@ORM \ sütununu deneyin (type = "boolean", options = {"default" = false}) '. Bu yapacak mı? – dmnptr

+0

Hayır, ya da değil. – BentCoder