2012-04-18 9 views
5

मुझे डॉक्टरेट 2 के साथ समस्या है और एक मेमॉमी रिश्ते पर बाएं शामिल हैं जो मैं काम करने की कोशिश कर रहा हूं। यह शायद मेरा प्रश्न निर्माता है, लेकिन मुझे इसे समझने की प्रतीत नहीं हो रही है।सिद्धांत 2 बाएं जोइन, कई सारे रिश्तों के साथ, पंक्तियों की गलत संख्या

---------------------------------- 
| user_id | attraction_id | 
---------------------------------- 
| 4    1    | 
| 4    2    | 
| 4    3    | 
---------------------------------- 

दो मॉडल, उपयोगकर्ता और आकर्षण है, जहां उपयोगकर्ता संबंध के मालिक के लिए:

मैं एक मेज में शामिल होने के इतने तरह की है।

जब मैं इस क्वेरी निष्पादित करें:

$attractions = $CI->em->createQueryBuilder() 
     ->select('a', 'u') 
     ->from('\ListLovers\Model\Attraction', 'a') 
     ->leftJoin('a.users', 'u', \Doctrine\ORM\Query\Expr\Join::WITH, 'u.id = 4') 
->getQuery()->getResult(); 

मेरे उन 1 की आईडी के साथ आकर्षण के लिए गिनती 1. महान है!

अब मैं तो जैसे तालिका में शामिल होने का एक और पंक्ति जोड़ने अगर:

---------------------------------- 
| user_id | attraction_id | 
---------------------------------- 
| 1    1    | 
| 4    1    | 
| 4    2    | 
| 4    3    | 
---------------------------------- 

... और एक ही क्वेरी निष्पादित, मेरे उन 1 की आईडी है ... शून्य के साथ आकर्षण के लिए गिनती। क्या?

क्या मुझे कुछ याद आ रही है?

धन्यवाद, मार्क।

+1

आपको किसी अन्य तालिका (आपके उपयोग कस्टम पहचानकर्ता) में शामिल होने के लिए फ़ील्ड का उपयोग करना होगा, और फ़िल्टर SQL क्वेरी में "कहां" अनुभाग में होना चाहिए। – ZhukV

उत्तर

0

क्या आप इसे इस तरह की कोशिश करता है, तो: के लिए कई करने के लिए कई MEMBER OF या NOT MEMBER OF है

 $attractions = $CI->em->createQueryBuilder('a') 
         ->leftJoin('a.users', 'u') 
         ->addSelect('u') 
         ->where('u.id = :uid') 
         ->setParameter('uid', 4) 
        ->getQuery() 
        ->getResult(); 
2

सबसे अच्छा तरीका है।

$attractions = $CI->em->createQueryBuilder() 
     ->select('a', 'u') 
     ->from('\ListLovers\Model\Attraction', 'a') 
     ->where(':uid MEMBER OF a.users') 
     ->setParameter('uid', 4) 
     ->getQuery()->getResult(); 
संबंधित मुद्दे