現在私は以下の3つのテーブルを持っています。カテゴリーエンティティでDoctrine many to many [Semantical Error]
articles_categories
+-------------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+---------+------+-----+---------+-------+
| article_id | int(11) | NO | PRI | NULL | |
| category_id | int(11) | NO | PRI | NULL | |
+-------------+---------+------+-----+---------+-------+
カテゴリ
+-----------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| title | varchar(255) | NO | | NULL | |
+-----------------+--------------+------+-----+---------+----------------+
記事
+-----------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| title | varchar(255) | NO | | NULL | |
+-----------------+--------------+------+-----+---------+----------------+
/**
* @ORM\ManyToMany(targetEntity="Article", mappedBy="categories")
* @ORM\OrderBy({"createdAt" = "DESC"})
*/
protected $articles;
記事の内容
/**
* All categories this article belongs to.
*
* @ORM\ManyToMany(targetEntity="Category", inversedBy="articles", cascade={"persist"})
* @ORM\JoinTable(name="articles_categories")
*/
protected $categories;
ほとんどのクエリが正常に動作します。しかし、私はカテゴリに属する記事を入手したい。またはそれは特定のカテゴリを持っているか、カテゴリに基づいて記事をフィルタリングしたいですか?
私は次のクエリを書いています。
$em = $this->getEntityManager();
$qb = $em->createQueryBuilder('c');
$qb->select('1')
->from('articles_categories', 'a_c')
->leftJoin('\\Chip\\Entity\\Article', 'a', 'WITH', 'a.id = a_c.article_id')
->leftJoin('\\Chip\\Entity\\Category', 'c', 'WITH', 'c.id = a_c.category_id')
;
$result = $qb->getQuery()->getResult();
ただし、次のエラーが発生します。
[Semantical Error] line 0, col 14 near 'articles_categories': Error: Class 'articles_categories' is not defined.
500 Internal Server Error - QueryException
1 linked Exception: QueryException »
質問を書くためのヒントやその他の方法があれば、それは素晴らしいものです。
ありがとうございました。
'articles_categories'はDoctrineマップクラスではなく、ORMクラスではありません。必要に応じて、エンティティ間の関係テーブルを指定する必要はなく、それらの間の既存の関係のみを指定する必要があります。 – Matteo
いくつかの例でこの答えをチェックhttp://stackoverflow.com/a/19710312/2270041 – Matteo
@Matteoありがとう、ありがとう。あなたは問題を解決しました。 – bharatesh