[Проблема решена]Symfony3 Doctrine2 Колонка не может быть пустым
Эй люди, мне нужна ваша помощь по проекту фреймворка.
У меня есть два объекта, «статья» и «изображение», статья может содержать несколько изображений, поэтому я сделал отношения OneToMany со стороны статьи и ManyToOne со стороны изображения. Doctrine генерирует для меня столбец «article_id» в таблице изображений. Я сделал форму, чтобы создать статью с одним или несколькими изображениями ... Однако, когда я исполню ее у меня есть ошибка, выброшенная:
Исключение при выполнении «INSERT INTO изображения (URL, альт, article_id) VALUES (?,?,?) 'с параметрами ["jpeg", "untitled.jpg", null]: SQLSTATE [23000]: Нарушение ограничения целостности: 1048 Столбец' article_id 'не может быть нулевым.
Когда я смотрю на журналы отладки профилировщика, я вижу, что у меня есть «INSERT INTO статье [...]» (так в статье создается с ID?) И только после этого у меня есть известный «INSERT INTO image [...]», где происходит ошибка.
Благодарим за помощь.
EDIT Жирным шрифтом вы найдете строки, которые я добавил для решения этой проблемы.
Я добавил в форму СтатьяВида статьи, в опциях коллекции изображений это:
«by_reference» => ложных
И я добавил к методе addImage в статье сущность этого:
$ image-> setArticle ($ this);
$ this-> images-> add ($ image);
Ах да. Подход дробовика. Вы переходите от кода к публикации всего. И все же решение, которое я опубликовал вчера, не показано. Очень грустный. Вот мысль. Сделайте себе две новые сущности с только тем соотношением, которое имеет статья/изображение. Избавьтесь от остальной бессмыслицы, которая просто вызывает путаницу. Получите две новые сущности, чтобы правильно размещать сообщения, и вы можете понять, что происходит. – Cerad
Еще лучше, следуйте примеру в документации: http://symfony.com/doc/current/form/form_collections.html – Cerad
Спасибо @Cerad. Документация привела меня к решению проблемы. Я добавил строку, которую вы сказали мне в своем первом ответе: $ image-> setArticle ($ this), и я добавил также тот же метод $ this-> images-> add ($ image). Я также добавил к моим вариантам коллекции изображений «by_reference» => false. Учить уроки ! RTFM! –