2012-06-22 2 views
3

У меня есть объект Place и Placetype. My Place сущность есть его атрибут ID установлен в положение AUTO:Symfony2: отсутствует назначенный ID

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

Но когда я хочу сохранить объект, я получил следующее сообщение об ошибке:

Entity типа блабла \ Entity \ Место не хватает назначенный идентификатор. Стратегия генерации идентификатора для этого объекта требует, чтобы поле ID было заполнено до вызова EntityManager # persist(). Если вы хотите, чтобы автоматически сгенерировали идентификаторы, вам необходимо соответствующим образом настроить отображение метаданных .

Вы знаете, как исправить это?

Спасибо за вашу помощь

ответ

5

Он работает путем замены:

/** 
* @var integer $uid 
* 
* @ORM\Column(name="id", type="integer", nullable=false) 
* @ORM\Id 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
private $id; 

к этому:

/** 
* @var integer $uid 
* 
* @ORM\Column(name="id", type="integer", nullable=false) 
* @ORM\Id 
*/ 
private $id; 
1

Попробуйте это:

/** 
* @var integer $uid 
* 
* @ORM\Column(name="id", type="integer", nullable=false) 
* @ORM\Id 
* @ORM\GeneratedValue(strategy="IDENTITY") 
*/ 
private $id; 

Установите стратегию "IDENTITY"

+0

я изменил на "Идентичность" (на самом деле это было предыдущее значение), но все равно никаких изменений .. –

+0

Проблемы найдена, у меня был этот атрибут: /** * @var целого $ idPlaceType * * @ORM \ Column (имя = "idTypelieu", типа = "число", обнуляемый = ложь) * @ORM \ GeneratedValue (strategy = "NONE") */ private $ idPlaceType; и я удалил строку * @ORM \ GeneratedValue (strategy = "NONE") Теперь он работает! –

1

Эта ошибка может возникнуть, если внешние ключи не настроены. В этом случае вам нужно использовать стратегию IDENTITY. Пример:

одно пиво имеет один пьющий

beer.id_drinker = drinker.id

а здесь:

ALTER TABLE `drinker` 
ADD CONSTRAINT `drinker_ibfk_1` FOREIGN KEY (`id`) REFERENCES `beer` (`id_drinker`); 

что плохо> drinker.id = пиво .id_drinker

ХОРОШЕЕ:

ALTER TABLE `beer` 
ADD CONSTRAINT `beer_ibfk_1` FOREIGN KEY (`id_drinker`) REFERENCES `drinker` (`id`); 
0

Я работаю с симфони 3.2.x Если использовать YML следует добавить следующее:

generator: 
      strategy: IDENTITY 

полный пример:

id: 
    id: 
     type: integer 
     nullable: false 
     options: 
      unsigned: false 
     id: true 
     generator: 
      strategy: IDENTITY 

С уважением