такого в вашем бизнесе нет
class Catalog extends AbstractEntity
{
private $removed = false;
...
public function isRemoved()
{
return $this->removed;
}
public function remove()
{
$this->removed = true;
$eventManager->dispatch(new CatalogDeleted($this->id()));
}
...
}
class CatalogRepository extends AbstractRepository implements CatalogRepositoryInterface
{
...
public function update(Catalog $catalog)
{
if($catalog->isRemoved()){
$this->delete($catalog);
}
}
private function delete(Catalog $catalog)
{
//удаляем из базы
}
}
//Client
$catalog->remove(); //каталог всем сообщает, что он сейчас будет удален (удаляются интеграционные связи)
$repository->update($catalog); //удаляется каталог из БД