是否可以为sonata_type_collection设置查询?例如,我现在就这样做......
->add('deal', 'sonata_type_collection',
array(
'required' => true,
'label' => 'product',
),
array(
'property' => 'product',
'edit' => 'inline',
'inline' => 'table',
))
这很好用,但我在集合中显示的交易有状态......我只想显示状态设置为真的交易......我怎么能这样做?我可以设置收集查询吗?
问题是我能做到这一点:
->add('deal', null, array(
'by_reference' => false,
'class' => 'Mp\ShopBundle\Entity\DailyDeal',
'query_builder' => $this->modelManager->createQuery('Mp\ShopBundle\Entity\DailyDeal', 'h')
->where('h.status = 1'),
), array(
'edit' => 'inline',
'inline' => 'table',
))
这样一来,如果选择它保存在一个数组中的多个交易...我想为我选择的每笔交易创建一个单独的对象。就像sonata_type_collection那样..
我该怎么办?
答案 0 :(得分:0)
我知道的唯一方法是在您的实体中创建一个属性和getter,它只返回您想要的值并在Admin类中使用它。
<强> Entity.php 强>
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
class Entity
{
/**
* @ORM\OneToMany(targetEntity="XXX")
*/
private $dealsActivated;
public function getDealsActivated()
{
$collection = new ArrayCollection();
foreach ($this->getDeal() as $deal) {
if ($deal->getStatus() === 1) {
$collection->add($deal);
}
}
return $collection;
}
}
<强> admin.php的强>
->add('dealsActivated', 'sonata_type_collection',
array(
'required' => true,
'label' => 'product',
),
array(
'property' => 'product',
'edit' => 'inline',
'inline' => 'table',
)
)
它没有经过优化,但可与Sonata配合使用。