0
我想知道是否有一種方法可以使用2個ManyToMany關係從一個表中獲取記錄(這可能比較容易以一個示例來解釋)。學說ManyToMany - 加入多個關係
我有3個模型:文章,主題和類型,有一個關係ManyToMany之間的文章< - >主題和文章< - >類型和我正在尋找的是獲得分配文章的類型到某個主題。我希望這是有道理的。
下面你可以看到我的實體聲明:
class Article
{
/**
* @var topics
*
* @ORM\ManyToMany(targetEntity="Topic")
* @ORM\JoinTable(name="article_topic")
*/
protected $topics;
/**
* @var types
*
* @ORM\ManyToMany(targetEntity="Type", inversedBy="articles")
* @ORM\JoinTable(name="article_type")
*/
protected $types;
}
class Topic
{
/**
* @var Article
*
* @ORM\ManyToMany(targetEntity="Article")
*/
private $articles;
}
class Type
{
/**
* @var Article
*
* @ORM\ManyToMany(targetEntity="Article")
*/
private $articles;
}
現在在我的TypeRepository我有一個方法:(修訂版)
public function getByTopic($topic = null)
{
$qb = $this->getEntityManager()->createQueryBuilder()
->select('t')
->from('Type', 't');
if ($topic) {
$subqb = $this->getEntityManager()->createQueryBuilder()
->select('a.id')
->from('Article', 'a')
->innerJoin('a.topics', 'atop', 'WITH', 'atop.id = :topicId')
;
$qb->innerJoin('t.articles', 'ta')
->where($qb->expr()->in('ta.id', $subqb->getDql())
->setParameter('topicId', $topic->getId());
}
return $qb->getQuery()->getResult();
}
,我得到一個錯誤:無效PathExpression。 StateFieldPathExpression或SingleValuedAssociationField的預期(但它顯示了我從樹枝模板的行,我很努力達到此底部)。
的問題是如何獲得分配給屬於某個話題的文章類型。
任何建議表示讚賞。
謝謝。