2012-08-25 12 views
5

मैं ऐसे क्षेत्रSonataAdminBundle model_type मूल्यों फिल्टर के रूप में फिल्टर

/** 
    * @ORM\ManyToOne(targetEntity="Town") 
    **/ 
    protected $town; 

और इस तरह के विधि के साथ व्यवस्थापक वर्ग है

protected function configureDatagridFilters(DatagridMapper $datagridMapper) 
    { 
     $datagridMapper 
     ... 
     ->add('town', null, array('label' => 'Town'), null, array('expanded' => true, 'multiple' => true)) 
     ; 
    } 

यह मुझे इस तरह के फिल्टर देता है:

symfony2 SonataAdminBundle fulter example with doctrine entity और मेरे सवाल यह है कि : क्या मैं टाउन इकाई पुनर्प्राप्त करने के लिए कस्टम एसक्यूएल \ dql सेट कर सकता हूं? उदाहरण के लिए, आईडी IN (1, 2) वाले केवल टाउन का चयन करें?

उत्तर

8

ठीक है, मुझे मिल गया। यहां एक समाधान है:

protected function configureDatagridFilters(DatagridMapper $datagridMapper) 
{ 
    $datagridMapper 
    ... 
    ->add('town', null, array('label' => 'Town'), null, array(
     'expanded' => true, 
     'multiple' => true, 
     'query_builder' => function (\Doctrine\ORM\EntityRepository $repository) { 
      return $repository->createQueryBuilder('t') 
        ->where('t.id = ?1') 
        ->setParameter(1, 1) 
        ->add('orderBy', 't.name ASC'); 
     } 
    )) 
    ... 
    ; 
} 
संबंधित मुद्दे