原则:选择与多对多关系中的一个或多个项目相关的元素

时间:2010-03-17 16:22:17

标签: php count doctrine

我有一个与帖子有多对多关系的类别系统。如何选择与一个或多个帖子相关的类别列表?

$q = Doctrine_Query::create()
     ->from('Category c')
     ->where('<DONT KNOW WHAT TO WRITE>')
     ->select('c.name');

2 个答案:

答案 0 :(得分:3)

在DQL中创建相当于此的内容:

SELECT c.* 
FROM category c 
INNER JOIN category_post_rel cpr ON c.id = cpr.category_id;

编辑:

DQL等价物:

Doctrine_Query::create()
->select('c.name')
->from('Category c')
->innerJoin('c.Posts');

不幸的是,这也将加入Post表。您应该考虑在post_count模型中使用其他字段Category。它的值应该等于类别的关系计数。对于这个以及许多其他问题,这是非常常见的解决方案(因为它非常快)。

答案 1 :(得分:-1)

    ->where('post_id = \'CURRENT_POST\'')

我不知道Doctrine Query的语法,所以这只是猜测。将CURRENT_POST替换为您要检查的帖子。