如何在symfony中实现实例计数器?

时间:2018-10-13 23:32:46

标签: php symfony doctrine-orm

我正在尝试在php / symfony3项目上实现实例计数器,但是我没有找到方法。

我有一个“广告”实体,我想显示在Twig视图上存在多少个实例。

因此,在实体类中,我创建了一个带有getter / setter和两个静态方法的静态属性private static $nbAdverts = 0;

/**
 * @ORM\PrePersist
 */
public static function increaseAdverts()
{
    self::$nbAdverts++;
}

/**
 * @ORM\PreRemove
 */
public static function decreaseAdverts()
{
    self::$nbAdverts--;
}

我正在使用Doctrine事件调用这些方法:PrePersist和PreRemove。

在保留和刷新之前,这些广告是使用Advert存储库在控制器中创建的。在删除之前也使用此存储库调用。

当我添加或删除广告时,计数器仍停留在0。

我认为我做错了什么:是否可以在不重写存储库添加方法的情况下执行此操作?如果是的话,关于如何的任何想法?

1 个答案:

答案 0 :(得分:0)

您得到的行为是绝对正常的。您正在运行Web应用程序,在每次请求时,如果会话中未存储任何变量,则将其设置为默认值(如果存在)。因此,要实现您要执行的操作,您可以将静态变量保存在会话中,并在crementAdverts()和reducedAdverts()方法中对其进行更新。