2012-12-02 61 views
0
My\SampleBundle\Entity\Subject: 

    // ... 

    manyToOne: 
     author: 
      targetEntity: My\UserBundle\Entity\User 
      joinColumn: 
       name: owner 
       referencedColumnName: id 

與主題相關的用戶可以獲取。Symfony2/Doctrine2:我想從用戶信息中獲取數據

$query = $this->getEntityManager() 
       ->createQuery(' 
        SELECT s, a 
        FROM MySampleBundle:Subject s 
        LEFT JOIN s.author a 
        WHERE s.author = :author 
        GROUP BY s.title' 
      ) 
       ->setParameter("author", $author); 

相反,我該如何從用戶信息中獲得一個主題?

例如,用戶列表頁面中的查詢。

$query = $this->getEntityManager() 
       ->createQuery(' 
        SELECT u 
        FROM MyUserBundle:User u 
        GROUP BY u.username' 
      ); 

在這個時候,我也想獲得相關學科的數據。

我使用FOSUserBundle。
這是一個應該糾正My \ UserBundle \ Entity的問題嗎?
或者從orm設置階段錯誤嗎?

+0

請加上您的解決方案如下答案的例子。馬上解釋你改變了什麼,以及如何解決它。這將使其成爲完美的問答條目。如果遇到任何問題,請告訴我。是的,可以回答你自己的問題(然後接受答案)。 – hakre

+0

好的,它增加了文本。但它不是完美的解決方案。簡單的數據已被收購。但是,當連接表增加時,它將停止應答,並且它一直處於加載狀態。我認爲數據不一定太重。這個問題還沒有被理解。 –

+0

即使您對答案不是100%滿意,請不要只編輯您的問題,而是將其添加爲下面的答案*(新的空白框)。在你回答了你的問題並且過了一些小時間之後,你可以接受它作爲將你的問題標記爲「已解決」的答案。至少對於其他用戶來說,更清楚問題和答案是什麼。這甚至可能吸引其他可能會留下其他答案的人。 – hakre

回答

0

我修改過的程序。

第1步:加入我的\ UserBundle \實體\用戶

/** 
* @ORM\OneToMany(targetEntity="My\SampleBundle\Entity\Subject", mappedBy="author") 
*/ 
private $subjects; 

/** 
* Get subjects 
* 
* @return Doctrine\Common\Collections\Collection 
*/ 
public function getSubjects() 
{ 
    return $this->subjects; 
} 

第2步:添加 'inversedBy'

My\SampleBundle\Entity\Subject: 
    type: entity 

    // ... 

    manyToOne: 
     author: 
      targetEntity: My\UserBundle\Entity\User 
      inversedBy: subjects 
      joinColumn: 
       name: owner 
       referencedColumnName: id 

STEP:3查詢

$query = $this->getEntityManager() 
       ->createQuery(' 
        SELECT u, s 
        FROM MyUserBundle:User u 
        LEFT JOIN u.subjects s 
        ORDER BY u.username' 
      ); 

方便的數據已被收購。 但它不是完美的解決方案。

當連接表增加時,它停止應答,並且它一直處於加載狀態。
我認爲數據不一定太重。
該問題尚未理解。

另一個問題

$query = $this->getEntityManager() 
       ->createQuery(' 
        SELECT u, s, a, c, i 
        FROM MyUserBundle:User u 
        LEFT JOIN u.subjects s 
        LEFT JOIN u.articles a 
        LEFT JOIN u.comments c 
        LEFT JOIN u.images i 
        // etc... 
        // It will be in the state of loading all the time 
        // when join table increases. 
        ORDER BY u.username' 
      ); 
+0

他們是我的想象力。 頁面函數也涉及到,我認爲這是因爲數據太多。 我認爲現在基本的數據採集是可以的。 –