奏鸣曲管理员编辑表格多对多不起作用 - symfony2.1.6

dag*_*ger 12 many-to-many symfony sonata-admin

我在奏鸣曲管理编辑表单中实现多对多关系时遇到问题,具有以下结构.

purchase (id, total_price, discount, created_at)
purchase_product (purchase_id, product_id, quantity)
product (id, title, desc, price, thumbnail, created_at)
Run Code Online (Sandbox Code Playgroud)

我见过很多线程,并尝试过其中列出的解决方案.我试过了

->add('products', 'sonata_type_model', array('by_reference' => false))
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

No entity manager defined for class Doctrine\ORM\PersistentCollection 
Run Code Online (Sandbox Code Playgroud)

然后,当我找不到解决这个问题的方法时,我切换到了

->add('products', 'sonata_type_collection', array(), array('edit' => 'inline', 'inline' => 'table')
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

INVALID MODE type : sonata_type_collection - mapping : 8 
Run Code Online (Sandbox Code Playgroud)

我也无法弄清楚如何从purchase_product表中获取和显示数量.

任何指针和帮助都非常感谢.

Dan*_*sak 14

您可以尝试添加'expanded'=> true和'multiple'=> true

->add('products', 'sonata_type_model', array('expanded' => true, 'by_reference' => false, 'multiple' => true))
Run Code Online (Sandbox Code Playgroud)

  • 谢谢丹尼尔,有没有办法可以加载购买的最后一个相关产品及其详细信息,而不是加载带有复选框的所有产品 - 我还需要显示purchase_product表(链接表)中的数量 - 是有什么办法吗? (2认同)