我有一个实体(布局模板),它最多有 10 个可配置的侧边栏,它们都是同一种实体类型的实例。
我现在的解决方案是这样放出来(下)
/**
* @var object BizTV\ContainerManagementBundle\Entity\Container
*
* @ORM\ManyToOne(targetEntity="BizTV\ContainerManagementBundle\Entity\Container")
* @ORM\JoinColumn(name="sidebar1", referencedColumnName="id", nullable=true)
*/
protected $sidebar1;
/**
* @var object BizTV\ContainerManagementBundle\Entity\Container
*
* @ORM\ManyToOne(targetEntity="BizTV\ContainerManagementBundle\Entity\Container")
* @ORM\JoinColumn(name="sidebar2", referencedColumnName="id", nullable=true)
*/
protected $sidebar2;
但我意识到最好的方法是将它们存储在一个对象数组中(这也不会限制我在未来使用 10 个侧边栏)。如果有人能在这里指出我正确的方向。最难做的是我选择这 10 个实体的形式。我上面的方法是对十个属性中的每一个进行简单的下拉。
->add('sidebar1', 'entity', array(
'label' => 'Choose sidebar ',
'empty_value' => 'Not active',
'class' => 'BizTVContainerManagementBundle:Container',
'property' => 'select_label',
'query_builder' => function(EntityRepository $er) use ($company) {
return $er->createQueryBuilder('u')
->where('u.company = :company')
->setParameters( array('company' => $company) )
->orderBy('u.name', 'ASC');
},
))
->add('sidebar2', 'entity', array(
'label' => 'Choose sidebar ',
'empty_value' => 'Not active',
'class' => 'BizTVContainerManagementBundle:Container',
'property' => 'select_label',
'query_builder' => function(EntityRepository $er) use ($company) {
return $er->createQueryBuilder('u')
->where('u.company = :company')
->setParameters( array('company' => $company) )
->orderBy('u.name', 'ASC');
},
))
再一次,我意识到这远非最好的方法,但作为 Symfony2 的新手,我真的不知道如何去做。