Doctrine / Symfony2 OneToMany foreign_id, сохраняющий как NULL - PullRequest
6 голосов
/ 08 февраля 2012

У меня есть отношение от Assembly до ComponentSlot. Это отношения OneToMany.

// Assembly

/**
 * @ORM\OneToMany(targetEntity="ComponentSlot", mappedBy="assembly", cascade={"persist"})
 * @Assert\Valid
 */
protected $componentSlots;

// ComponentSlot

/**
 * @ORM\ManyToOne(targetEntity="Assembly", inversedBy="componentSlots")
 */
protected $assembly;

Схема, сгенерированная в базе данных, абсолютно в порядке. Правильные столбцы, правильные индексы и отношения.

Форма AssemblyType в Symfony2 содержит коллекцию ComponentSlotType. Я могу добавить несколько дочерних компонентов ComponentSlot. При сохранении все потомки Assembly и ComponentSlot сохраняются превосходно, за исключением того, что Assembly_id в таблице слотов компонентов имеет значение NULL.

Я скопировал настройки, которые были у меня в предыдущем проекте, которые прекрасно сохранили отношения, я совершенно тупик. Каскадное сохранение сохраняется в полях componentSlots сборки, и мой предыдущий опыт работы с OneToMany заключается в том, что мне не нужно делать здесь ничего особенного, об этом нужно позаботиться.

Любые указатели приветствуются:)

1 Ответ

4 голосов
/ 08 февраля 2012

Проверьте ваши предыдущие настройки. Я подозреваю, что у вас было что-то вроде:

// Assembly
public function addComponentSlot($componentSlot)
{
    $this->componentSlots[] = $componentSlot;

    $componentSlot->setAssembly($this);  // Probably left this out when you copied?
}
...