Symfony 4 - 如何.on(“选择”)和升级实体中的计数器?

时间:2018-01-21 17:42:46

标签: symfony doctrine-orm

在我的实体中我有一个观点 它每次都是在学说调用实体

时开始为0和++
/**
 * @var int
 *
 * @ORM\Column(name="compteur", type="integer", nullable=true)
 */
private $compteur;

我可以使用此功能

public function UpCompteur()
{
    $this->compteur = $this->compteur + 1;
}

每当我“选择”具有学说的实体时,如何自动使用此功能?

我知道每次我提出请求时都可以在存储库中添加此功能但是没有更好的可能性吗?

由于

2 个答案:

答案 0 :(得分:0)

我可能会使用lifecycle callback

在您的情况下,您需要在postLoad事件中调用您的函数。

  

实体发生后,实体会发生postLoad事件   从数据库或之后加载到当前的EntityManager中   刷新操作已应用于它。

它应如下所示:

use Doctrine\ORM\Mapping AS ORM;

/**
 * @ORM\Entity()
 * @ORM\HasLifecycleCallbacks()
 */
class Entity {
    // ...

    /**
     * @ORM\PostLoad
     */
     public function UpCompteur()
     {
         $this->compteur = $this->compteur + 1;
     }
}

答案 1 :(得分:0)

感谢Drkey这是最终的解决方案

use Doctrine\Common\Persistence\Event\LifecycleEventArgs;
use Doctrine\ORM\Mapping AS ORM;
/**
 * @ORM\Entity()
 * @ORM\HasLifecycleCallbacks()
 */
class Entity {

    // ...

    /**
     * @ORM\PostLoad
     */
    public function UpCompteur(LifecycleEventArgs $args)
    {
        $em = $args->getEntityManager();
        $this->compteur = $this->compteur + 1;
        $em->persist($this);
        $em->flush();
    }

真有用!