Я довольно новичок в Doctrine2, который я сейчас использую в проекте Symfony2.
Я пытаюсь сохранить сущности с внешним ссылочным внешним ключом, таким как пример категории документации Doctrine (http://www.doctrine -project.org / docs / orm / 2.0 / en / reference / association-mapping.html # one- ко-многим-автореферентных). Вероятно, есть очень простое решение, но я просто не мог найти его в Интернете.
По какой-то причине, значение для parent_id не сохраняется автоматически Doctrine (оно равно null), хотя я могу получить доступ к значению id объекта, который я назначаю в качестве родителя.
Некоторый код, вероятно, будет простым. Вот соответствующая часть:
Определение сущности:
class Area
{
// id, name, type, etc...
/**
* @ORM\ManyToOne(targetEntity="Area", inversedBy="sub_areas", cascade={"persist"})
* @ORM\JoinColumn(name="parent_area_id", referencedColumnName="id")
*/
private $parent_area;
/**
* @ORM\OneToMany(targetEntity="Area", mappedBy="parent_area", cascade={"persist"})
*/
private $sub_areas;
/**
* Set parent area
*
* @param obj $area
*/
public function setParentArea(Area $area)
{
$this->aera = $area;
}
// Other getters and setters, etc.
}
В действии:
$results = array();
foreach($area_types as $key => $type) {
$area = new Area();
$area->setType($type);
$area->setName($location->getAddressComponent($type));
if(isset($parent_area)) {
$area->setParentArea($parent_area);
}
$this->em->persist($area);
$parent_area = $area;
$results[] = $area->getId();
}
$this->em->flush();
Массив результатов выведет назначенные идентификаторы в Twig. Я также пытался использовать:
$area->setParentAreaId($parent_area->getId());
Может ли кто-нибудь объяснить, как Doctrine управляет последовательностью сохраняемости базы данных объектов, на которые есть ссылки?