ragnar_ok
@ragnar_ok

Doctrine: как добавить исключение для UniqueEntity?

Существует анкета. Заполненная анкета сохраняется в Answer.
Ограничил дублирование $user и $question используя UniqueEntity.
Есть свойство $file. Если оно не null, тогда нужно избежать UniqueEntity и допустить дублирование. Либо указать id $question на который не должно распространятся ограничение дублирования.
Как добавить такое исключение для UniqueEntity? Другие предложения?
<?php
namespace App\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;

/**
 * @UniqueEntity({"user", "question"});
 * @ORM\Entity(repositoryClass="App\Repository\AnswerRepository")
 */
class Answer
{
    /**
     * @ORM\Id()
     * @ORM\GeneratedValue()
     * @ORM\Column(type="integer")
     */
    private $id;

    /**
     * @ORM\ManyToOne(targetEntity="App\Entity\User", inversedBy="answers")
     * @ORM\JoinColumn(nullable=false)
     */
    private $user;

    /**
     * @ORM\ManyToOne(targetEntity="App\Entity\Question", inversedBy="answers")
     */
    private $question;

    /**
     * @ORM\Column(type="string", length=255, nullable=true)
     */
    private $file;

    public function getId(): ?int
    {
        return $this->id;
    }

    public function getUser(): ?user
    {
        return $this->user;
    }

    public function setUser(user $user): self
    {
        $this->user = $user;

        return $this;
    }

    public function getQuestion(): ?question
    {
        return $this->question;
    }

    public function setQuestion(?question $question): self
    {
        $this->question = $question;

        return $this;
    }

    public function getFile()
    {
        return $this->file;
    }

    public function setFile($file): self
    {
        $this->file = $file;

        return $this;
    }
}
  • Вопрос задан
  • 82 просмотра
Решения вопроса 1
mad_maximus
@mad_maximus
Не использовать UniqueEntity, а валидировать непосредственно сам $request и уже там плясать от различных условий. Если правильно работать с валидатором, то он не пропустит констрейнты, которые вы укажете.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы