2015-10-23 17 views
5

मैं कई घंटों तक इस पर अटक गया हूं। Table example संबंधित कोड:कॉन्फ़िगरेशन में सोनाटा एडमिन कस्टम क्वेरी लिस्टफिल्ड्स

protected function configureListFields(ListMapper $listMapper) 
{ 
    $listMapper 
      ->addIdentifier('name') 
      ->add('products') // Entity Product, @ORM\OneToMany 
      ->add('ord') 
    ; 
} 

मैं क्या करने की जरूरत में सूचीबद्ध होने से निष्क्रिय उत्पादों को छिपाने है

मैं सभी श्रेणियों और एक तालिका स्तंभ में वहाँ से संबंधित हैं उत्पादों (उत्पाद इकाई) सूची व्यवस्थापक वर्ग है "(बूलियन) product.active" के आधार पर "लेकिन मैं इसे समझ नहीं सकता। मुझे "createQuery" विधि के बारे में पता है लेकिन यह काम नहीं करता है। जब मैं एसक्यूएल उत्पन्न करता हूं और सीधे क्वेरी चलाता हूं तो यह काम करता है लेकिन यहां ऐसा लगता है कि मैं केवल श्रेणी फ़िल्टर करने के लिए प्रॉक्सीक्वायर का उपयोग कर सकता हूं और फिर सभी उत्पादों को अलग-अलग क्वेरी में पूछताछ की जाती है (और यह अलग क्वेरी मुझे यकीन नहीं है कि कैसे बदला जाए)।

public function createQuery($context = 'list') 
{ 
    $query = parent::createQuery($context); 

    $q = new ProxyQuery($query->join(sprintf('%s.products', $query->getRootAlias()), 'p') 
      ->andWhere('p.active = :act')->setParameter('act', true)); 

    return $q; 
} 

किसी भी मदद के लिए धन्यवाद

उत्तर

1

आप अपने क्षेत्र शून्य पर या संस्था के प्रकार बदल सकते हैं और क्वेरी इस्तेमाल किया अनुकूल करने के लिए एक query_builder option जोड़ सकते हैं:

protected function configureListFields(ListMapper $listMapper) 
{ 
    $listMapper 
     ->addIdentifier('name') 
     ->add('products', null, array(
      'query_builder' => function(EntityRepository $er) { 
       return $er->createQueryBuilder('qb') 
          ->leftjoin('qb.products', 'p') 
          ->where('p.active = :act') 
          ->setParameter('act', true) 
      } 
    )); 
} 

मैं परीक्षण नहीं किया यह एक टॉनी संबंध के साथ।

में आपके उत्तर के लिए इस topic

+0

धन्यवाद कुछ जानकारी कर रहे हैं लेकिन मैं अभी भी यह काम नहीं कर सकता। ऐसा लगता है कि 'query_builder' किसी भी तरह से उपयोग नहीं किया जाता है। मैंने मरने की कोशिश की(); उस समारोह में और कुछ भी नहीं होता है। –

+0

EntityRepository के लिए पूरा पथ शामिल न करें, न केवल नाम :) यह मेरे लिए एक आकर्षण की तरह काम करता है – Cowwando

संबंधित मुद्दे