【发布时间】:2015-02-04 08:57:35
【问题描述】:
我有一个实体“Product”,它与“ProductVariant”有 OTM 关系。
我希望能够生成一个 Sonata_type_collection,其中只显示具有“isMaster = false”的 ProductVariants。
我不能在 sonata_type_collection 中使用 query_builder。是否有其他方法可以操作生成的列表,并且仍然能够将新的 ProductVariants 插入到 Product 实体中?
我的实体:
/**
* Product
*
* @ORM\Table(name="product")
* @Gedmo\SoftDeleteable(fieldName="deletedAt")
* @ORM\Entity
*/
class Product
{
/**
* @var ArrayCollection $variants
* @ORM\OneToMany(targetEntity="My\Bundle\ProductVariant", mappedBy="product", cascade={"all"}, orphanRemoval=true)
*/
private $variants;
}
/**
* ProductVariant
*
* @ORM\Table(name="productVariant")
* @Gedmo\SoftDeleteable(fieldName="deletedAt")
* @ORM\Entity
*/
class ProductVariant
{
/**
* @var Product
* @ORM\ManyToOne(targetEntity="My\Bundle\Product", inversedBy="variants")
*/
private $product;
}
产品管理员:
protected function configureFormFields(FormMapper $formMapper)
{
$formMapper
->add('variants', 'sonata_type_collection',
array(
'label' => 'A nice label',
'btn_add' => false, // Because adding won't work with the softdeletable variants
'type_options' => array(
'delete' => true,
)
),
array(
'edit' => 'inline',
'inline' => 'table',
'delete' => 'inline'
)
)
;
}
【问题讨论】:
-
任何不使用
query_builder的具体原因 -
query_builder 在 sonata_type_collection 中是不可能的
-
你能提供你的实体定义吗?
-
我在帖子中提供了实体定义。
-
要在formMapper中还是在过滤器中生成列表?
标签: symfony sonata-admin