簡體   English   中英

如何在symfony2理論中優化此實體?

[英]how to optimize this entity in symfony2 doctrine?

我有一個實體(布局模板),該實體最多具有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來說,我真的不知道該怎么做。

使用Many to Many關系,對於表單,請使用“集合”字段類型:

http://symfony.com/doc/master/cookbook/form/form_collections.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM