2016-10-05 6 views
1

symfonyのサブクエリに問題があります。エンティティのsymfonyサブクエリ

私が何をしようとしているのですか?私には、ユーザーがいるテーブルと投稿のあるテーブルがあります。

Posts     Users 
id|author|content  id|username 

idでユーザー名を取得するサブクエリを作成します。

/** 
* @return array 
*/ 
public function findAll() 
{ 
    return $this->getEntityManager()->createQuery(
     'SELECT a, (SELECT u.username 
     FROM BackendBundle:User u WHERE u.id = a.author) as authorName 
     FROM BackendBundle:Article a' 
    )->getResult(); 
} 

結果:

enter image description here

は私が間違って何をしているのですか? IDによって他のテーブルから列を結合する最善の方法は何ですか?たぶん私は注釈を使うことができますか?

任意のヘルプについてはThxをご覧ください。

+0

チェックDOC:http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/ dql-doctrine-query-language.html#joins – olibiaz

答えて

-1

ここでサブクエリは必要ありません。必要なのは、ユーザーを記事に参加させる簡単な(INNER)JOINです。

Doctrineは既にarticle.authorフィールドはuser.id.に関連すること、(あなたのエンティティまたは別のYAMLファイルの注釈を通じて)を知っている必要がありますので、あなたも、あなたの参加で句にする必要はありません
$em->createQuery("SELECT a FROM Article JOIN a.author'"); 

編集:

私はあなたが1対多の記事のエンティティに関連したUserエンティティを持っていると仮定します。

class User 
{ 
    // ... 
    /** 
    * @OneToMany(targetEntity="Article", mappedBy="author") 
    */ 
    private $articles; 
    // ... 
} 

class Article 
{ 
    // ... 
    /** 
    * @var User 
    * @ManyToOne(targetEntity="User", inversedBy="articles") 
    */ 
    private $author; 
    // ... 
} 

教義関連マッピングのドキュメントを参照してください:加入についてhttp://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/association-mapping.html

+0

アノテーションの例を表示できますか? – Tapakan

+0

私はちょうどユーザーのテーブルから1列のユーザー名を結合したい。記事の著者名を表示する。 – Tapakan

+0

あなたは、エンティティ全体のみに参加することはできますが、1つの列のみを結合することはできず、その列の値を他のエンティティのプロパティにバインドすることはできません。 – Tapakan

関連する問題