Я хочу добавить опцию onDelete = "CASCADE" в один из моих атрибутов через аннотацию @JoinColumn:
/**
* @ORM\OneToMany(targetEntity = "AppBundle\Entity\Product",mappedBy = "category",fetch = "EAGER")
* @ORM\JoinColumn(onDelete = "CASCADE")
*/
private $products;
Но когда я пытаюсь обновить с помощью php bin/console doctrine:schema:update --force, всегда получаю:
nothing to uptade - database already sync.
Я попытался добавить некоторые другие атрибуты, и у меня возникла та же проблема. Однако, если я намеренно добавлю ошибку, я получаю ожидаемое сообщение об ошибке.
Как я могу это исправить?





Аннотация @OneToMany - это аннотация, которую вы используете на обратной стороне вашей ассоциации "многие к одному". Таблица, в которой хранятся объекты на этой стороне ассоциации, не содержит внешнего ключа, указывающего на таблицу, в которой хранятся ваши объекты Product, поэтому там нет «столбца соединения».
Документация утверждает следующее о @JoinColumn:
This annotation is used in the context of relations in @ManyToOne, @OneToOne fields and in the Context of @JoinTable nested inside a @ManyToMany.
В вашем случае аннотация вообще не применяется ни к одному столбцу, и, следовательно, ваша база данных не нуждается в обновлении.
Если вы хотите, чтобы объекты Product, связанные с данным Category, были удалены посредством каскадных операций в вашей базе данных, вы должны добавить @JoinColumn(onDelete = "CASCADE") на стороне владельца ассоциации, рядом с аннотацией @ManyToOne атрибута categoryProduct.
Рад, что помог;) Если хотите, можете отметить ответ как принятый, как объяснили здесь