Symfony 实体动态 属性 来自过滤器关联属性

Symfony entity dynamic property from filter association properties

可能会有一个看起来像这段代码的实体,当我想实例化这个实体时,dossierClientActif 属性自动成为 dossiersClient 属性的过滤器。

class Contact {

    private id;

    /**
     * @var \Doctrine\Common\Collections\ArrayCollection
     */
    private $dossiersClient;

    /**
     * @var \AppBundle\Entity\DossierClient
     */
    private $dossierClientActif;

    /**
     * @return \Doctrine\Common\Collections\ArrayCollection
     */
    public function getDossiersClient()
    {
        return $this->dossiersClient;
    }

    /**
     * Add dossierClient
     *
     * @param \AppBundle\Entity\DossierClient $dossierClient
     *
     * @return Contact
     */
    public function addDossierClient(\AppBundle\Entity\DossierClient $dossierClient)
    {
        $this->dossiersClient[] = $dossierClient;

        return $this;
    }

    /**
     * @return DossierClient
     */
    public function getDossierClientActif()
    {
        $criteria = Criteria::create();
       $criteria->where(Criteria::expr()->eq('indArchive', 0));
       return $this->dossiersClient->matching($criteria)->first();
    }
}

使用具有虚拟属性的 JMS 序列化程序适合我。

AppBundle\Entity\Contact:
    exclusion_policy: ALL
    virtual_properties:
        getDossierClientActif:
            serialized_name: dossierClientActif
            groups: ['contact']
    properties:
        id:
            expose: true
            groups: ['contact']
        dossiersClient:
            expose: true
            groups: ['contact']