正在验证symfony2中的arraycollection

正在验证symfony2中的arraycollection,symfony,doctrine,arraycollection,validates-uniqueness-of,Symfony,Doctrine,Arraycollection,Validates Uniqueness Of,我不熟悉Symfony2+原则,我正在寻找一种方法来验证Arraycollection中的唯一性。也许这个问题已经得到了回答,但我不知道如何解决它。 我有一个带有回调的relevamientoserviciospresador类: namespace Prestadores\PrincipalBundle\Entity; use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Validator\Constraints as Assert;

我不熟悉Symfony2+原则,我正在寻找一种方法来验证Arraycollection中的唯一性。也许这个问题已经得到了回答,但我不知道如何解决它。 我有一个带有回调的relevamientoserviciospresador类:

namespace Prestadores\PrincipalBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
use Doctrine\Common\Collections\ArrayCollection;
use Symfony\Component\Validator\ExecutionContext;
/**
 * Prestadores\PrincipalBundle\Entity\Relevamientosserviciosprestador
 *
 * @ORM\Table(name="relevServiciosPrestador")
 * @ORM\Entity(repositoryClass="Prestadores\PrincipalBundle\Repository\RelevamientosserviciosprestadorRepository")*
 * @Assert\Callback(methods={"sonUnicosLosTiposDeReclamoq"})  
 */
class Relevamientosserviciosprestador
{
    /**
     * @var integer $id
     *
     * @ORM\Column(name="id", type="integer", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $id;
    ....
    ....
    /**
     * @ORM\OneToMany(targetEntity="Atencionusuarioreclamo", mappedBy="relevamiento_id", cascade={"persist"})
     * @Assert\Valid 
     */
    private $reclamos;         
    ....
    ....
    public function __construct()
    {
        $this->personal = new ArrayCollection();
        $this->reclamos = new ArrayCollection();        
    }
    ....
    ....
     /*Acá intentaremos validar si los tipos de reclamo que se están cargando son únicos para ese relevamiento*/
    public function sonUnicosLosTiposDeReclamoq(ExecutionContext $context)
    {
        foreach ($this->reclamos as $reclamo){
            /*Here, I get all entities, not only those related to a Relevamientosserviciosprestador*/
            var_dump($reclamo->gettiporeclamo()->getnombre());
        }
    }

}
以及ATENCIONSUARIORECLAMO实体:

namespace Prestadores\PrincipalBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;


/**
 * Prestadores\PrincipalBundle\Entity\Atencionusuarioreclamo
 *
 * @ORM\Table(name="atencionUsuarioReclamo")
 * @ORM\Entity
 */
class Atencionusuarioreclamo
{
    /**
     * @var integer $id
     *
     * @ORM\Column(name="id", type="integer", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $id;

    /**
     * @var Atencionusuariosede
     *
     * @ORM\ManyToOne(targetEntity="Atencionusuariosede")
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="nroSede", referencedColumnName="id")
     * })
     */
    private $nrosede;

    /**
     * @var relevamiento_id
     *
     * @ORM\ManyToOne(targetEntity="Relevamientosserviciosprestador")
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="relevamiento_id", referencedColumnName="id")
     * })
     */
    private $relevamiento_id;

    /**
     * @var Prmreclamotipo
     *
     * @ORM\ManyToOne(targetEntity="Prmreclamotipo")
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="tipoReclamo", referencedColumnName="id")
     * })
     * @Assert\NotBlank()     
     */
    private $tiporeclamo;
    ....
    ....
    ....
    ....


}
我想在给定的sederelevamiento\u id中检查tiporeclamo的唯一性

我使用一个表单创建或编辑一个relevamientoserviciospresador,该表单包含一个子表单集合,用于“AtencionSuarioReclamo”实体。提交时,执行对relevamientoserviciospresador的回调,但$this->reclamos拥有所有保存的实体,而不仅仅是与我正在编辑的relevamientoserviciospresador相关的实体。 这是预期的行为还是我错过了什么? 我还测试了中提到的方法 但是,它再次检查所有实体

我也读过,但我不明白它是否解决了问题。
请告诉我,在保存ArrayCollection之前,您如何管理其唯一性
很抱歉我的英语很差
提前感谢

Ivan

php的
array array\u unique(array$array[,int$sort\u flags=sort\u STRING])

ArrayCollection->toArray()
ArrayCollection->\uu construct()

就你而言:

$Atencionusuarioreclamo = 
    new ArrayCollection(array_unique($Atencionusuarioreclamo->toArray());