Доктрина 2.1: как установить «каскад: сохранение» с помощью yaml

#php #doctrine-orm

#php #doctrine-orm

Вопрос:

Я получаю сообщение об ошибке, когда пытаюсь выполнить

 $b = new B();
$a->addB($b);
$entityManager->persist($a);
  

поскольку мне сначала нужно сохранить $ b, однако я не могу этого сделать, поэтому мне нужно установить cascade: persist, я полагаю. Я просто не могу найти в документации, как это сделать, используя схему yaml.
Документация не охватывает эту часть (я пробовал и в других местах документации)

Приветствия

Ответ №1:

Это работает для меня

 oneToMany:
    products:
      targetEntity: Name
      mappedBy: product
      cascade: ["persist"]
  

Комментарии:

1. Ссылка на документацию Doctrine: doctrine-orm.readthedocs.org/en/2.0.x/reference /…

Ответ №2:

Если класс A имеет ассоциацию, скажем, один ко многим с B, а переменная ArrayCollection в A называется $bcollection, тогда раздел YAML для cascade={«persist»} будет выглядеть следующим образом:

 oneToMany:
    bcollection:
      targetEntity: EntitiesB
      cascade
        - persist
      mappedBy: contact
      inversedBy: null
      orphanRemoval: false
      orderBy: null
  

Ответ №3:

Если вы пробовали cascade: ["persist"] и все еще не работаете, вот почему.

По состоянию на 2016-08-28 я использую последнюю версию doctrine на данный момент.
Доктрина persist больше не работает, потому что она удалена.

Основная причина в том, что вы не должны изменять первичный ключ подключенной таблицы. И если вы это сделали, то почему?

Именно по этой причине cascade persist он удален в YML Doctrine 2.

Ссылка: https://groups.google.com/forum /#!тема/doctrine-user/fdL7sgtjRM0