2012-09-20 55 views
1

我有一個實體「的相關博客文章」用YML映射:Symfony的2和學說2 - 使用「獲取」加入回報空數組

type: entity 
table: blog_posts 
id: 
    id: 
    type: integer 
    generator: { strategy: AUTO } 
fields: 
    body: 
    type: text 
    created_at: 
    type: datetime 
manyToMany: 
    replies: 
    targetEntity: BlogPosts 
    inversedBy: replyTo 
    orderBy: {"id": "DESC"} 
    orphanRemoval: true 
    joinTable: 
     name: blog_post_replies 
     joinColumns: 
     reply_to_id: 
      referencedColumnName: id 
     inverseJoinColumns: 
     reply_id: 
      referencedColumnName: id 
    replyTo: 
    targetEntity: BlogPosts 
    mappedBy: replies 
manyToOne: 
    user: 
    targetEntity: User 
    inversedBy: posts 
    joinColumns: 
     user_id: 
     referencedColumnName: id 
     nullable: false 

的問題是,當我嘗試使用連接來獲取數據,結果是空的。

$query = $em->createQuery("SELECT p, rl FROM <Bundle>:BlogPosts p JOIN p.replies rl WHERE p.user = 1"); 
    $posts = $query->getResult(); // Returns empty array 

但它完美的作品沒有加入:

$query = $em->createQuery("SELECT p FROM <Bundle>:BlogPosts p WHERE p.user = 1"); 
    $posts = $query->getResult(); // Works as intended 

我失去了什麼?我真的絕望:(

編輯:? 剛剛發現,它只返回崗位,有答覆我如何可以選擇所有職位,如果有回覆,回覆太

+2

Pos你有自己的解決方案作爲答案。通過這種方式,當別人有同樣的問題,他們可以很容易地找到答案 –

+0

好的,thanx的建議!會做^^ – Arthur

回答

1

所以我找到了!相反JOIN我使用LEFT的問題JOIN:

$query = $em->createQuery("SELECT p, rl FROM <Bundle>:BlogPosts p LEFT JOIN p.replies rl WHERE p.user = 1"); 
$posts = $query->getResult(); // Now it works like a charm! 

所以現在MySQL的加入結果到博客文章當使用簡單連接,它試圖加入員額的答覆,在女巫情況下,結果會如果帖子沒有任何內容,請爲空!