如何将消息附加到实体本身下面的uniqueConstraints
?下面的第二个查询将生成An exception occurred while executing....SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry...
。而不是这个不友好的信息,我怎么能打印"你要求什么什么…"?
INSERT INTO cars (model, brands_id) VALUES ('bmw', '5')
SQL 2- INSERT INTO cars (model, brands_id) VALUES ('bmw', '5')
注意:我发现Symfony文档一般都很差,而且大多数似乎都是捷径。如果你在寻找一个解决方案,如果有人知道答案,那么你很幸运,如果你不知道,你是....
实体
/**
* @ORM'Entity
* @ORM'Table(name="cars", uniqueConstraints={@ORM'UniqueConstraint(columns={"model", "brands_id"})})
*/
class Cars
{
控制器try
{
$submission = $form->getData();
$em = $this->getDoctrine()->getManager();
$cars = new Cars();
$cars->setModel($submission->getModel());
$cars->setBrands($submission->getBrands());
$em->persist($cars);
$em->flush();
.......
}
catch (Exception $e)
{
......
}
表单类型
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->setAction($options['action'])
->setMethod('POST')
->add('brands', 'entity',
array(
'class' => 'CarBrandBundle:Brands',
'property' => 'name',
'multiple' => false,
'expanded' => false,
'empty_value' => '',
'query_builder' => function (EntityRepository $repo)
{
return $repo->createQueryBuilder('b')->orderBy('b.name', 'ASC');
}
))
->add('model', 'text', array('label' => 'Model'))
->add('button', 'submit', array('label' => 'Submit'))
;
}
将validation.yml
文件放到src/Car/BrandBundle/Resources/config
文件夹中。
内容应该类似如下:
CAR'BrandBundle'Entity'Cars:
constraints:
- Symfony'Bridge'Doctrine'Validator'Constraints'UniqueEntity:
fields: [model, brands_id]
message: "your_message_here"
你也可以使用注解来使用验证约束。
>