【发布时间】:2016-07-05 14:04:48
【问题描述】:
我正在使用ramsey/uuid-doctrine 包将二进制 UUID 作为实体的主键:
class Site
{
/**
* @ORM\Id
* @ORM\GeneratedValue(strategy="UUID")
* @ORM\Column(type="uuid_binary")
*/
private $id;
...
}
我需要为另一个实体构建一个表单,该实体在多对一关系中具有该实体。
所以我在表单构建器中添加了一个 EntityType,如下所示:
$builder->add('site')
一切正常,HTML 选择将 uuid 作为键,但是当我提交表单时,我收到此验证错误:
Symfony\Component\Validator\ConstraintViolation Object(Symfony\Component\Form\Form).children[site] = 4a41b3c4-4299-11e6-b562-fc3fdb5f816d
原因: Symfony\Component\Form\Exception\TransformationFailedException 无法反转属性路径“站点”的值:选项“4a41b3c4-4299-11e6-b562-fc3fdb5f816d”不存在或不唯一
原因: Symfony\Component\Form\Exception\TransformationFailedException 选项“4a41b3c4-4299-11e6-b562-fc3fdb5f816d”不存在或不唯一
如果我这样做,在控制器中:
$this->getDoctrine()->getManager()
->getRepository('AppBundle:Site')->find('4a41b3c4-4299-11e6-b562-fc3fdb5f816d');
它确实找到了实体,所以它存在。
【问题讨论】: