2012-03-29 9 views
8

मान लें कि मेरे पास खाता इकाई है, और एक खाताडेटा इकाई है (जो कुछ कम उपयोग की गई संपत्तियों को संग्रहित करती है, जैसे लिंग, आदि)।सिद्धांत 2: किसी संस्था को उसके एसोसिएशन के मूल्य से कैसे खोजा जाए?

खाता और खाता डेटा के बीच संबंध एक-से-एक है, और खाता "खाता" खाता है।

मैं डॉक्ट्राइन 2/सिम्फनी 2 का उपयोग करके, खाताडेटा में किसी संपत्ति के अनुसार खाता खींचने का तरीका जानने का प्रयास कर रहा हूं।

उदाहरण के लिए, मैं खाता डेटा-> लिंग = 'मादा' के साथ सभी खातों की खोज कैसे करूं?

उत्तर

15

इस तरह के सिद्धांत का क्वेरी निर्माता का उपयोग चाल करना चाहिए:

$repository = $this->getDoctrine()->getRepository('YourBundle:Account'); 

$query = $repository->createQueryBuilder('a') 
    ->join('a.AccountData', 'd') 
    ->where('d.gender = :gender') 
    ->setParameter('gender', 'female') 
    ->getQuery(); 

$female_accounts = $query->getResult(); 

आप एक के लिए जाँच कर सकते हैं http://symfony.com/doc/current/book/doctrine.html#joining-to-related-records उदाहरण के बजाय एक भंडार वर्ग का उपयोग कर।

उम्मीद है कि यह मदद करता है।

+1

क्या इसमें शामिल होना चाहिए ('ए। अकाउंटडाटा', 'डी')? –

+0

@ जी, आप सही हैं। – orourkedd

1

कुछ की तरह:

$em = $this->getEntityManager(); 
    $qb = $em->createQueryBuilder(); 

    $qb->addSelect('account'); 
    $qb->addSelect('accountData'); 

    $qb->from('ZaysoCoreBundle:Account','account'); 

    $qb->leftJoin('account.accountData', 'accountData'); 

    $qb->andWhere($qb->expr()->eq('accountData.gender',$qb->expr()->literal('female'))); 

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

मैनुअल बहुत उपयोगी है: http://docs.doctrine-project.org/projects/doctrine-orm/en/2.1/reference/query-builder.html

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