2014-10-07 9 views
11

Staram się unikać wprowadzania lub dla $locked pola ręcznie więc przypisany domyślny jako w @ORM adnotacji jednak to nie działa zgodnie z oczekiwaniami, więc otrzymuję błąd poniżej. Ja jednak poradziłbym sobie z tym, ale wygląda na to, że go nie obsługuje!Ustawienie na polu z adnotacjami ORM i obsługi zapytań

Czy istnieje sposób przypisania 0 przez defaul, aby instrukcja INSERT nie zawiedzie?

Uwaga: mogę rozwiązać to z prePersist() metody, __construct() lub $locked = 0; tak dalej, ale to, co mnie interesuje jest @ORM rozwiązanie adnotacji.

Jeśli adnotacja @ORM go nie obsługuje, jaki jest sens posiadania options={"default"=0}, ponieważ oznacza ona domyślną wartość pól w bazie danych? Zobacz zdjęcie poniżej.

enter image description here

Błąd:

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 

Podmiot użytkownika:

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

Controller:

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

Odpowiedz

21

To wszystko, czego potrzebujesz:

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

czyli

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

UPDATE

Doctrine nie obsługuje ustawić domyślne wartości w kolumnach przez na Słowo kluczowe "DEFAULT" w SQL.

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

+0

O ile wiem, nie ma adnotacji, który obsługuje to. – dmnptr

+2

Wypróbuj '@ORM \ column (type =" boolean ", options = {" default "= false})'. Czy to zrobi? – dmnptr

+0

Nie, to też nie. – BentCoder

Powiązane problemy