Doctrine orm Doctrine2事件侦听器?订户?派遣?
我已经把文档读了好几遍,但是我遗漏了一些东西。。我好像没办法让这件事成功 场景:我有一个Tshirts实体(id,qtyTotals)和一个size实体(tshirt_id,size,qty),每次创建、更新或删除新尺寸时,我都需要通过选择所有尺寸,将它们相加并更新总数来更新Tshirts.qtyTotals 我确信我可以从我的控制器上分两步完成这项工作,但我觉得事件方法是正确的 我一直在读这篇文章,特别是2.4节 我试图使用注释:@ORM\EntityListeners({“TshirtListener”}),但找到了该类,但从未执行过它 如何定义事件?我如何发送它们?侦听器和订阅者之间的区别是什么 请举一个简单的例子Doctrine orm Doctrine2事件侦听器?订户?派遣?,doctrine-orm,zend-framework2,Doctrine Orm,Zend Framework2,我已经把文档读了好几遍,但是我遗漏了一些东西。。我好像没办法让这件事成功 场景:我有一个Tshirts实体(id,qtyTotals)和一个size实体(tshirt_id,size,qty),每次创建、更新或删除新尺寸时,我都需要通过选择所有尺寸,将它们相加并更新总数来更新Tshirts.qtyTotals 我确信我可以从我的控制器上分两步完成这项工作,但我觉得事件方法是正确的 我一直在读这篇文章,特别是2.4节 我试图使用注释:@ORM\EntityListeners({“TshirtLis
多谢各位 您可以使用
onBootstrap
函数中模块module.php
类中的条令事件管理器将事件附加到实体,如下所示:
class Module
{
public function onBootstrap(MvcEvent $e)
{
$application = $e->getApplication();
$sm = $application->getServiceManager();
$doctrineEntityManager = $sm->get('doctrine.entitymanager.orm_default');
$doctrineEventManager = $doctrineEntityManager->getEventManager();
$doctrineEventManager->addEventListener(
array(\Doctrine\ORM\Events::prePersist, \Doctrine\ORM\Events::preUpdate),
new \Application\Listener\MyEntityListener($sm)
);
}
}
在监听器中,你可以做任何你想做的事情,例如:
namespace Application\Listener;
class EntityListener
{
private $sm;
public function __construct($sm)
{
$this->sm = $sm;
}
public function prePersist($eventArgs)
{
$entity = $eventArgs->getEntity();
if (method_exists($entity, 'setTotals')) {
//Update entity totals
}
}
public function preUpdate($eventArgs)
{
$entity = $eventArgs->getEntity();
if (method_exists($entity, 'setTotals')) {
//Update entity totals
}
}
}
T恤和尺码之间的关联类型是什么?