Я пытаюсь добавить объект пользователя к сущности в событии preFlush. В основном каждый объект имеет созданнуюBy, которая является объектом User.Doctrine 2 preFlush Event Добавить ассоциированный класс
Всякий раз, когда я пытаюсь это сделать, я получаю следующее сообщение об ошибке.
Notice: Undefined index: 0000000055f036b6000000009c9cc58f in /dir/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php line 870
Это моя функция preFlush.
public function preFlush(PreFlushEventArgs $args)
{
$em = $args->getEntityManager();
$uow = $em->getUnitOfWork();
$securityContext = $this->container->get('security.context');
if($securityContext->isGranted('IS_AUTHENTICATED_REMEMBERED')
|| $securityContext->isGranted('IS_AUTHENTICATED_FULLY'))
{
$user = $securityContext->getToken()->getUser();
}
if(!$user)
{
$user = $em->getRepository('NAB\EnterpriseBundle\Entity\User')->findOneByUsername($this->username);
}
foreach ($uow->getScheduledEntityInsertions() as $entity)
{
$entity->setCreatedBy($user);
$em->persist($user);
}
$meta = $em->getClassMetadata(get_class($entity));
$uow->recomputeSingleEntityChangeSet($meta, $entity);
$uow->computeChangeSets($meta, $entity);
}
Что я делаю неправильно?
Является ли это 'preFlush()' событие жизненного цикла на вашей сущности? Или что такое больший контекст? Мне любопытно, потому что мне нужно сделать что-то подобное, но не знаю, как связать все это вместе. Я не думал, что диспетчер объектов доступен в самой сущности? Я никогда не делал события жизненного цикла или слушателя событий, поэтому я не знаю, как они должны взаимодействовать с моим контроллером. –