У меня такой код:
/**
* @Entity @Table(name = "Record")
*/
class Record
{
public function setParent(Parent $p)
{
$this->parent = $p;
}
/** @Id @Column(type = "integer") @GeneratedValue **/
private $id;
/** @ManyToOne(targetEntity = "\Domain\Model\Parent", inversedBy = "childs")
* @JoinColumn(name = "parent" referencedColumnName = "id", onDelete = "SET NULL")
*/
private $parent;
}
и родительский класс:
/**
* @Entity @Table(name = "Parent")
**/
class Parent
{
public function getChilds():array
{
return $this->childs->getValues();
}
/** @Id @Column(type = "integer") @GeneratedValue **/
private $id;
/**
* @OneToMany(targetEntity = "\Domain\Model\Record, mappedBy = "parent")
*/
private $childs;
}
Я хочу переместить детей от одного родителя к другому. Когда я делаю это таким образом, это не влияет на базу данных:
public function move(Parent $from, Parent $to)
{
foreach($from->getChilds() as $child)
{
$child->setParent($to);
$entityManager->persist($child);
}
}
Как мне это сделать? Почему доктрина игнорирует изменения?






Вам понадобится $ entityManager-> flush (); сразу после блока foreach. doctrine-project.org/projects/doctrine-orm/en/2.6/reference/…