저는 preUpdate를 작성하려고하는데 postUpdate를 사용하여 작업을하고있었습니다.하지만 해당 엔티티의 편집이 이루어질 때마다 변경 중이라는 사실을 고려하지 않았습니다. 필드는 ... 그래서 PreUpdate 이벤트 리스너가 사이트를 크래시합니다.
이
내 preUpdate 리스너입니다 ... 내가 대신 preUpdate를 사용해야 읽어namespace Prizes\PrizesBundle\EventListener;
use Doctrine\ORM\Event\LifecycleEventArgs;
use Prizes\PrizesBundle\Entity\Prize;
use Prizes\CatalogBundle\Entity\CatalogHasPrize as CHP;
/**
* Description of DeactivatePrizesInCatalog
*
* @author Victoria Noguera
* Desactiva premios en catalogos cuando se desactiven en el prize central.
*/
/**
* @ORM\Entity
* @ORM\HasLifecycleCallbacks
*/
class DeactivatePrizesInCatalog {
/**
* @ORM\PrePersist()
* @ORM\PreUpdate()
*/
public function preUpdate(LifecycleEventArgs $args) {
$entity = $args->getEntity();
$entityManager = $args->getEntity
Manager();
if ($entity instanceof Prize) {
if ($args->hasChangedField('status')) {
$status_new = $args->getNewValue('status');
if ($status_new->getName() == "Inactive") {
$statusinactive = $entityManager->getRepository('AppStatusBundle:Status')->find(8);
$q = $entityManager->createQuery("UPDATE CatalogBundle:CatalogHasPrize c SET c.status = :statusid WHERE c.status = 7 AND c.prize = :prizeid")
->setParameters(array('statusid' => $statusinactive, 'prizeid' => $entity->getId()));
$rs = $q->getResult();
} else if ($status_new->getName() == "Active") {
$statusinactive = $entityManager->getRepository('AppStatusBundle:Status')->find(7);
$q = $entityManager->createQuery("UPDATE CatalogBundle:CatalogHasPrize c SET c.status = :statusid WHERE c.status = 8 AND c.prize = :prizeid")
->setParameters(array('statusid' => $statusinactive, 'prizeid' => $entity->getId()));
$rs = $q->getResult();
}
}
}
}
}
이것은 (I 내가 config.yml 파일에하고 있어요 방법입니다 그냥 그것을 읽으면 services.yml에 들어간다. 그러나 나는 나중에 바꿀 것이다)
services:
preupdate.listener:
class: Prizes\PrizesBundle\EventListener\DeactivatePrizesInCatalog
tags:
- { name: doctrine.event_listener , event: preUpdate }
그러나이 작업을 수행 할 때 프로젝트는 완전한 기능에서 사용할 수없는 503 서비스로 변경됩니다. public function preUpdate(LifecycleEventArgs $args) { }
이라고 쓰여도 구성 문제가 있다고 가정하고 있지만 잘못된 생각을 갖고 있습니다.
제공되는 도움에 감사드립니다. 리스너 클래스가 아니어야합니다 ... ...
/**
* @ORM\PrePersist()
* @ORM\PreUpdate()
*/
/**
* @ORM\Entity
* @ORM\HasLifecycleCallbacks
*/
과 : 당신은 그 자체가 실체없는 리스너에 매핑 정보를 추가하는 당신에게
오류 로그에 어떤 오류가 있습니까? –