我有一个"公司"具有三个字段的实体:id,name和slug。这个名字很独特。
当我尝试创建一个名称已经使用的新公司时,我收到以下错误:
An exception occurred while executing 'INSERT INTO companies (name, slug) VALUES (?, ?)' with params ["test", "test-1"]:
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'test' for key 'UNIQ_8244AA3A5E237E06'
我不知道为什么,但@UniqueEntity没有显示我的错误消息。我也尝试过这一行:@UniqueEntity(fields = {" name"},groups = {" company"})
以下是该类的代码:
<?php
namespace Project\UserBundle\Entity;
use Symfony\Component\Validator\Constraints as Assert;
use Doctrine\Common\Collections\ArrayCollection;
use Gedmo\Mapping\Annotation as Gedmo;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
/**
* Company
*
* @ORM\Table(name="companies")
* @UniqueEntity(fields={"name"}, message="form.error.name.unique")
* @ORM\Entity
*/
class Company
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\Column(type="string", length=50, unique=true)
* @Assert\NotBlank(message="form.error.name.not_blank");
* @Assert\Length(min="4", max="50", minMessage="form.error.name.length.min {{ limit }}", maxMessage="form.error.name.length.max {{ limit }}");
*/
private $name;
/**
* @var string
*
* @ORM\Column(length=170, unique=true)
* @Gedmo\Slug(fields={"name"})
*/
private $slug;
/**
* @ORM\OneToMany(targetEntity="Project\UserBundle\Entity\User", mappedBy="company")
* @Assert\Valid
*/
private $users;
}
答案 0 :(得分:0)
你能测试这三种可能性并尝试获取默认消息吗? (但似乎你已经尝试了第三个。也许与其他人一起运气) (顺便说一句,你不能在UniqueEntity注释中设置组选项)
/**
* User
*
* @UniqueEntity("name")
* @UniqueEntity(fields="name")
* @UniqueEntity(fields={"name"})
*/
class User
{
/**
* @var string
*
* @ORM\Column(name="name", type="string", unique=true)
*
* @Assert\NotBlank
*/
private $name;
}
答案 1 :(得分:0)
这个语法对我有用:
@UniqueEntity("name", message="form.error.name.unique")