【发布时间】:2014-04-01 15:30:53
【问题描述】:
我正在使用最新的 Symfony2 和 Sonata Admin 来维护我的网站,这是我的问题:
我有两个实体:Shop 和 Discount。一个店铺可以有多个折扣,一个折扣可以分配给多个店铺。因此它应该是多对多关系。
我想在 ShopAdmin 中使用奏鸣曲的 type_model_list,这样我就可以从弹出窗口中选择这些折扣并选择多个。这可能吗?
这是我的商店实体的一部分:
use Doctrine\Common\Collections\ArrayCollection;
...
/**
* @var \Doctrine\Common\Collections\ArrayCollection
* @ORM\ManyToMany(targetEntity="ShoppingFever\ShoppingFeverBundle\Entity\Discount", fetch="EAGER")
* @ORM\JoinColumn(name="discountId", referencedColumnName="id")
*/
private $discountId;
这是功能configureFormFields的相关ShopAdmin:
$formMapper
->add('shopName',null, array('label' => 'Název obchodu'))
->add('brandName',null, array('label' => 'Název brandu'))
->add('discountId', 'sonata_type_model_list', array(
'btn_add' => 'Add discount', //Specify a custom label
'btn_list' => 'button.list', //which will be translated
'btn_delete' => false, //or hide the button.
'btn_catalogue' => 'SonataNewsBundle' //Custom translation domain for buttons
), array(
'placeholder' => 'Nothing selected',
'expanded' => true, 'multiple' => true, 'by_reference' => false
))
->add('street',null, array('label' => 'Ulice'))
->add('city',null, array('label' => 'Město'))
->add('zip',null, array('label' => 'PSČ'))
->add('gps',null, array('label' => 'GPS'))
->add('openingHours','textarea', array('label' => 'Otevírací doba'))
->add('eventId',null, array('required'=>false,'label' => 'Event'));
如果我有 一对多 关系(任何商店打折),管理员就可以工作。 Symfony 为 many to many 生成折扣和商店 ID 的参考表。
这是一对多输出,我希望它适用于多对多,所以现在它说施华洛世奇,会有几个折扣。
多对多也可以吗?
【问题讨论】:
-
要实现所需的输出,您必须为连接表创建实体,该连接表充当中间实体并与商店和折扣实体保持关系,以便更好地了解stackoverflow.com/questions/21712459/… i已经为其他目的实现了它,但你可以从那里选择一个逻辑
标签: php symfony doctrine-orm sonata-admin