我正在尝试在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。
我认为我做错了什么:是否可以在不重写存储库添加方法的情况下执行此操作?如果是的话,关于如何的任何想法?
答案 0 :(得分:0)
您得到的行为是绝对正常的。您正在运行Web应用程序,在每次请求时,如果会话中未存储任何变量,则将其设置为默认值(如果存在)。因此,要实现您要执行的操作,您可以将静态变量保存在会话中,并在crementAdverts()和reducedAdverts()方法中对其进行更新。