我有一个简单的表格,但它需要很长时间:
$builder->add('manufacturer', 'entity', array(
'class' => 'XBundle\Entity\Manufacturer',
....
))
->add('type','entity', array(
'class' => 'XBundle\Entity\Entity\Type',
))
->add('size','entity', array(
'class' => 'XBundle\Entity\Size',
))
->add('serial', 'text', array(
'required'=>true,
))
;
安装了
xhproof
并调查问题后,我发现验证需要很长时间。/**
* @ORM\ManyToOne(targetEntity="Ttm\HardwareBundle\Entity\Manufacturer", inversedBy="models")
* @Assert\Valid() <--- this line is the problem
*/
private $manufacturer;
Symfony2关于有效注释的文档不是很清晰:
traverse
类型:
boolean
默认值:true
如果该约束应用于包含对象数组的属性,则只有在将该选项设置为true时才会验证该数组中的每个对象。
deep
类型:
boolean
默认值:false
如果该约束应用于包含对象数组的属性,则只有在将该选项设置为true时才会递归验证该数组中的每个对象。
来源:http://symfony.com/doc/current/reference/constraints/Valid.html
我的问题是,这两个选项有什么区别,哪些值能保证更好的性能?
traverse
只验证第一层,而deep
则扫描数组的第一层和子层级。 - A.Ltraverse=false
和deep=true
似乎在性能上更好。 - zizoujab