2013-08-01 3 views

उत्तर

12

यदि आपकी स्थिरता ContainerAwareInterface लागू करती है तो आपके पास कंटेनर तक पूर्ण पहुंच है और वहां से आपके एक इकाई-प्रबंधक प्राप्त कर सकते हैं।

एक बार आपके पास इकाई-प्रबंधक होने के बाद आप संग्रह प्राप्त कर सकते हैं या DQL या क्वेरीबिल्डर का उपयोग कर क्वेरी बना सकते हैं।

namespace Vendor\YourBundleBundle\DataFixtures\ORM; 

use Doctrine\Common\DataFixtures\FixtureInterface; 
use Symfony\Component\DependencyInjection\ContainerAwareInterface; 
use Symfony\Component\DependencyInjection\ContainerInterface; 

class LoadCharacterData implements FixtureInterface, ContainerAwareInterface 
{ 
    private $container; 

    public function setContainer(ContainerInterface $container = null) 
    { 
     $this->container = $container; 
    } 

    public function load() 
    { 
     $em = $this->container->get('doctrine')->getEntityManager('default'); 

     // example using DQL 
     $query = $em->createQuery('SELECT u FROM YourBundle\Entity\User u WHERE u.name = your_name'); 
     $users = $query->getResult(); 

     // example query using repository 
     $repository = $em->getRepository('YourBundle:User'); 
     $entities = $repository->findBy(array('name' => 'your_name')); 

     // example using queryBuilder 
     $qb = $repository->createQueryBuilder('u'); 
     $qb 
      ->where('u.name = :name') 
      ->setParameter('name', 'your_name') 
      ->orderBy('u.name'); 

     $users = $qb->getQuery()->getResult(); 

     // ... 

    } 
+4

भविष्य के संदर्भ के लिए, 'EntityManager' (जो' ऑब्जेक्टमैनेजर 'लागू करता है) विधि लोड में पहला तर्क के रूप में पारित हो जाता है। सिम्फनी 2.1 के बाद आपको 'कंटेनरएवेयर इंटरफेस' –

+1

'getEntityManager() 'को बहिष्कृत करने की आवश्यकता नहीं है। इसके बजाय 'getManager()' का उपयोग करें। – marcv

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