7
क्वेरी बनाने के लिए मैं डेटाफिक्चर के अंदर EntityManager या रिपोजिटरी क्लास का उपयोग कैसे कर सकता हूं?डेटाफिक्स्चर क्लास के अंदर एक सिद्धांत क्वेरी निष्पादित करने के लिए कैसे?
क्वेरी बनाने के लिए मैं डेटाफिक्चर के अंदर EntityManager या रिपोजिटरी क्लास का उपयोग कैसे कर सकता हूं?डेटाफिक्स्चर क्लास के अंदर एक सिद्धांत क्वेरी निष्पादित करने के लिए कैसे?
यदि आपकी स्थिरता 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();
// ...
}
भविष्य के संदर्भ के लिए, 'EntityManager' (जो' ऑब्जेक्टमैनेजर 'लागू करता है) विधि लोड में पहला तर्क के रूप में पारित हो जाता है। सिम्फनी 2.1 के बाद आपको 'कंटेनरएवेयर इंटरफेस' –
'getEntityManager() 'को बहिष्कृत करने की आवश्यकता नहीं है। इसके बजाय 'getManager()' का उपयोग करें। – marcv