代码之家  ›  专栏  ›  技术社区  ›  Migol

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

  •  1
  • Migol  · 技术社区  · 15 年前

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

    $q = Doctrine_Query::create()
         ->from('Category c')
         ->where('<DONT KNOW WHAT TO WRITE>')
         ->select('c.name');
    
    2 回复  |  直到 15 年前
        1
  •  3
  •   Crozin    15 年前

    在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 模型。其值应等于类别的关系计数。对于这个问题和其他许多问题,这是非常常见的解决方案(因为它非常快)。

        2
  •  -1
  •   Jonah    15 年前
        ->where('post_id = \'CURRENT_POST\'')
    

    我不知道条令查询的语法,所以这只是一个猜测。用要检查的帖子替换当前帖子。

    推荐文章