2013-02-26 15 views
38

यह मेरा कार्य है जहां मैं उपयोगकर्ता इतिहास दिखाने की कोशिश कर रहा हूं। इसके लिए मुझे अपने क्रेडिट इतिहास के साथ उपयोगकर्ता के वर्तमान क्रेडिट प्रदर्शित करने की आवश्यकता है।डॉक्टरेट में बाएं कैसे शामिल हों?

यह मैं क्या करने की कोशिश कर रहा हूँ:

[Syntax Error] line 0, col 98: Error: Expected Doctrine\ORM\Query\Lexer::T_WITH, got 'ON'

संपादित:

public function getHistory($users) { 
    $qb = $this->entityManager->createQueryBuilder(); 
    $qb->select(array('a','u')) 
      ->from('Credit\Entity\UserCreditHistory', 'a') 
      ->leftJoin('User\Entity\User', 'u', \Doctrine\ORM\Query\Expr\Join::WITH, 'a.user = u.id') 
      ->where("a.user = $users ") 
      ->orderBy('a.created_at', 'DESC'); 

    $query = $qb->getQuery(); 
    $results = $query->getResult(); 

    return $results; 
} 

हालांकि, मैं इस त्रुटि मिलती है मैं में शामिल होने में 'के साथ' 'ऑन' के साथ बदल दिया खंड और अब जो मैं देखता हूं वह शामिल कॉलम से केवल 1 मान है।

उत्तर

80

आप एक संपत्ति उपयोगकर्ता की ओर इशारा करते पर एक संघ है (मान लीजिए कि Credit\Entity\UserCreditHistory#user करते हैं, अपने उदाहरण से उठाया), तो वाक्य रचना काफी सरल है:

public function getHistory($users) { 
    $qb = $this->entityManager->createQueryBuilder(); 
    $qb 
     ->select('a', 'u') 
     ->from('Credit\Entity\UserCreditHistory', 'a') 
     ->leftJoin('a.user', 'u') 
     ->where('u = :user') 
     ->setParameter('user', $users) 
     ->orderBy('a.created_at', 'DESC'); 

    return $qb->getQuery()->getResult(); 
} 

जब से तुम में शामिल हो गए पर एक शर्त आवेदन कर रहे हैं परिणामस्वरूप, LEFT JOIN या बस JOIN का उपयोग करना वही है।

array(
    array(
     0 => UserCreditHistory instance, 
     1 => Userinstance, 
    ), 
    array(
     0 => UserCreditHistory instance, 
     1 => Userinstance, 
    ), 
    // ... 
) 
+0

मैं सिर्फ दोनों की कोशिश की के साथ/दृष्टिकोण संबंध के बिना:

तो कोई संबंध नहीं उपलब्ध है, तो क्वेरी

public function getHistory($users) { $qb = $this->entityManager->createQueryBuilder(); $qb ->select('a', 'u') ->from('Credit\Entity\UserCreditHistory', 'a') ->leftJoin( 'User\Entity\User', 'u', \Doctrine\ORM\Query\Expr\Join::WITH, 'a.user = u.id' ) ->where('u = :user') ->setParameter('user', $users) ->orderBy('a.created_at', 'DESC'); return $qb->getQuery()->getResult(); } 

यह निम्नलिखित एक resultset कि ऐसा दिखाई देता उत्पादन करेगा तरह दिखता है। , 1 के संबंध में आप सुझाव देते हैं कि मैंने आपके कोड का पालन किया है, मुझे परिणाम सेट मिल रहा है। लेकिन मैं शामिल परिणाम सेट नहीं देख सकता। दूसरे दृष्टिकोण के लिए मैं कहना चाहता हूं कि मुझे डेटा मिल रहा है, लेकिन यह नहीं था कि मैं वास्तव में –

+4

की तलाश में था, पहली क्वेरी आपको 'UserCreditHistory' ऑब्जेक्ट देता है जिसमें 'उपयोगकर्ता' ऑब्जेक्ट हाइड्रेटेड होता है, क्योंकि यह एक fetch- शामिल हों (http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/dql-doctrine-query-language.html#joins) – Ocramius

+0

यूप बहुत सच है, यह हाइड्रेटेड है इसलिए मुझे इसकी आवश्यकता है वांछित मूल्य –

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