у которого есть некие дочерние сущности:
class Aggregate
{
/**
* @var Node[]
*
* @ORM\OneToMany(targetEntity="Node", mappedBy="parent", cascade={"persist", "remove"})
*/
private $nodes;
public function deleteNodeById(int $id):
{
$node = $this->findNodeById();
$this->nodes->remove($node);
return $node;
}
}
Для этих сущностей настроены связи через доктрину.
Вопрос, могу ли я(и если могу, то как?) написать метод deleteNodeById таким образом, чтобы послего его вызова, мне осталось только вызвать EntityManager::flush()?
сейчас, чтобы всё работало, мне нужно еще вызвать EntityManager::remove($node); перед вызовом flush
я посчитал, что указание cascade={"persist", "remove"} в аннотации связи будет достаточно. но ошибся. :(
дальше не знаю, куда копать.
заранее спасибо, за ответ.
orphanRemoval попробуйте. Но это не агрегат тогда, если из вне решают кто и что будет удалять
спасибо. гляну сейчас, что это за зверь такой.
прошу прощения, за возможно глупый вопрос. разобраться хочу а в чем концептуально проблема тогда будет? у меня есть агрегат, который позволяет через себя работать с дочерними сущностями(добавлять, удалять, менять порядок) и соотвественно я хочу, чтобы корректно работало удаление, через вызов всего одного метода.
id дочерней сущности откуда знают?
Обсуждают сегодня