2017-06-15 6 views
0

私のブログでテーマが何回使用されたかをカウントしたいと思います。LeftJoinを使用したDQLリクエスト

ブログ投稿(フランス語の記事)は、1つ以上のテーマを使用できます。

だから私はテーブル(多対多)を持つ:

  • themes_articles(id_theme、id_article)そして:
  • テーマ(id_theme、nom_theme)
  • 記事(ブログ記事)(id_article、説明を... 。)
  • SQLでは

、私が行います

SELECT T.id,nom_theme,count(A.themes_id) from themes_articles A right join themes T on T.id=A.themes_id group by nom_theme 

これはうまくいきますが、DQLで右ジョインを使用したい場合は少し難しいです。私は左の結合を使用するために私の2つのテーブルを切り替えましたが、私はここで私の関係テーブル(themes_articles)をどのように使うことができるのか分かりません。

私はこのような何か試してみました:

$query = $this->createQueryBuilder('') 
->select(array('T.id', 'nomTheme', 'count(A.themes_id) as nombre')) 
->from('themes', 'T') 
->leftJoin('themes_articles', 'A', 'WITH', 'T.id= A.themes_id') 
->groupBy('nom_theme'); 
    return $query->getQuery()->getResult(); 

をしかし、それは動作しません。

[Semantical Error] line 0, col 93 near 'themes_articles': Error: Class 'themes_articles' is not defined. 

DQLリクエストでSQLリクエストを変換するにはどうすればよいですか?

ありがとうございました。この

$query = $this->createQueryBuilder() 
    ->select(array('t.id', 't.nomTheme', 'count(ta.themes_id) as nombre')) 
    ->from('<YOUR BUNDLE>:<Theam Entity Class>', 't') //Like AcmeTheamBundle:Themes 
    ->leftJoin('t.themes_articles') 
    ->groupBy('t.nomTheme'); //better to use theam id 
    return $query->getQuery()->getResult(); 

答えて

0

使用は少し良いです!私は、私の要求で、記事とテーマの間の関係の名前を追加しなければならなかった(content)。

$query = $this->createQueryBuilder('t') 
    ->select(array('t.id', 't.nomTheme', 'count(ta.id) as nombre')) 
    ->leftJoin('t.contient', 'ta', 'WITH', 't.id= ta.id') 
    ->groupBy('t.nomTheme'); //better to use theam id 
    return $query->getQuery()->getResult(); 
+0

こんにちは、私はあなたの要求を試してみましたが、私は持っているこのエラー [構文エラー]行0、列87:エラー: – devicz

+0

位置していますあなたのエンティティ:文字列の終了予定は、「テーマBlogBu​​ndle」を得ましたか。このパスを指定してください – Tester

+0

詳細情報を含む回答を追加しました – devicz

関連する問題