2017-02-20 12 views
0

У меня есть объект Question с объектом, называемым code. Я хочу установить значение code равным id по умолчанию с аннотациями Doctrine.Symfony + Doctrine - Установить значение по умолчанию, равное ID

Это, как я пытался, но я получаю сообщение об ошибке:

/** 
* @ORM\Column(type="integer") 
* @ORM\Id 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
private $id; 

/** 
* @ORM\Column(type="integer") 
*/ 
private $code = $id; 

Или:

/** 
* @ORM\Column(type="integer") 
* @ORM\Id 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
private $id; 

/** 
* @ORM\Column(type="integer", options = {"default": $id}) 
*/ 
private $code; 

Спасибо.

+0

Какова цель дублирования идентификатора? – OlivierC

ответ

2

http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/events.html

Я не знаю, что это ваша потребность, но, может быть, postPersist событие это то, что вы хотите:

postPersist - The postPersist event occurs for an entity after the entity has been made persistent. It will be invoked after the database insert operations. Generated primary key values are available in the postPersist event.

Тогда в вашей организации:

/** 
* @ORM\Column(type="integer") 
* @ORM\Id 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
private $id; 

/** 
* @ORM\Column(type="integer") 
*/ 
private $code; 

/** @PostPersist */ 
public function doStuffOnPostPersist() 
{ 
    $this->code = $this->id; 
} 

Важно что ваш объект doctrine будет иметь идентификатор только после того, как он будет сохранен, поэтому после события post persist.

Смежные вопросы