【发布时间】:2018-09-19 07:58:14
【问题描述】:
我正在尝试在 onFlush 侦听器中保留一个实体... 这是我的代码:
public function onFlush(OnFlushEventArgs $args){
$em = $args->getEntityManager();
$uow = $em->getUnitOfWork();
foreach ($uow->getScheduledEntityUpdates() as $entity) {
switch (true) {
case $entity instanceof Products:
$changeset = $uow->getEntityChangeSet($entity);
foreach($changeset as $column => $change) {
$logs = new Logs();
$logs->setDate(new DateTime());
$em->persist($logs);
$classMetadata = $em->getClassMetadata('BddBundle:Logs');
$uow->computeChangeSet($classMetadata, $logs);
}
}
}
break;
default : break;
}
}
}
问题是程序块(没有插入数据库的行)和 PHP 说:
PHP 致命错误:applis/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php 第 653 行的最大执行时间超过 300 秒,引用者:http://website/
有人有解决方案/方法吗?
问候
编辑 1:
将 $em 更改为 $uow 不会进行任何更改...
$uow->persist($logs);
$classMetadata = $em->getClassMetadata('BddBundle:Logs');
$uow->computeChangeSet($classMetadata, $logs);
【问题讨论】:
-
计算一次变更集,而不是在循环内。这是疯狂,这不是斯巴达。你为什么要添加
switch(true)反正太哈哈,这没有任何意义。 -
@emix :我只是将 switch 更改为 if 语句,现在我只坚持一次,但同样的问题......