簡體   English   中英

Symfony3-@UniqueEntity不起作用

[英]Symfony3 - @UniqueEntity is not working

當我打算保存數據庫允許的數據@uniqueConstrainst時,我找不到解決數據庫錯誤的方法。 問題是我的@UniqueEntity在數據庫錯誤顯示之前沒有處理該錯誤。

這是我的代碼

    * @ORM\Table(name="persona_idioma", uniqueConstraints={@UniqueConstraint(name="persona_idioma_unique",columns={"id_persona","id_idioma"})},indexes={@ORM\Index(name="IX_Relationship11", columns={"id_idioma"}), @ORM\Index(name="IX_Relationship12", columns={"id_persona"})})
 * @ORM\Entity(repositoryClass="AppBundle\Repository\PersonaIdiomaRepository")
 * @UniqueEntity(
 *     fields={"idPersona", "idIdioma"},
 *     errorPath = "idPersona", 
 *     message="mensaje"
 *       
 * )

更新:我剛剛添加了實體的列

/**
     * @var \AppBundle\Entity\Persona
     *
     * @ORM\ManyToOne(targetEntity="AppBundle\Entity\Persona",inversedBy="idiomas")
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="id_persona", referencedColumnName="id_persona")
     * })
     */
    private $idPersona;

    /**
     * @var \AppBundle\Entity\Idioma
     *
     * @ORM\ManyToOne(targetEntity="AppBundle\Entity\Idioma")
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="id_idioma", referencedColumnName="id_idioma")
     * })
     */
    private $idIdioma;

實體所在的控制器

$formulario->handleRequest($request);

    if ($formulario->isSubmitted() && $formulario->isValid()) {
        $em->persist($persona);
        $em->flush();
        return $this->redirectToRoute('persona_edit', array('id_persona' => $persona->getIdPersona()));
    }

    return $this->render('persona/new_edit.html.twig', [
                'formulario' => $formulario->createView(),
    ]);

我和你有同樣的問題,我將代碼從:

/**
 * User
 *
 * @ORM\Table(name="user")
 * @ORM\Entity(repositoryClass="AppBundle\Repository\UserRepository")
 * @UniqueEntity(fields={"username", "email"}, message="This value is already taken")
 */

至:

/**
 * User
 *
 * @ORM\Table(name="user")
 * @ORM\Entity(repositoryClass="AppBundle\Repository\UserRepository")
 * @UniqueEntity(fields={"username"}, message="This username is already taken")
 * @UniqueEntity(fields={"email"}, message="This email is already taken")
 */

奇怪,但是對我有用。 如果我幫助過你,請給我簽名。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM