CakePHP:具有标记给定标记的帖子或页面的用户数

时间:2012-02-08 17:17:47

标签: cakephp count has-and-belongs-to-many cakephp-1.2

我们的数据有以下关系:

用户

  • 拥有并属于许多页面
  • 拥有并属于许多帖子

  • 拥有并属于许多用户
  • 拥有并属于许多标签

帖子

  • 拥有并属于许多用户
  • 拥有并属于许多标签

标签

  • 拥有并属于许多页面
  • 拥有并属于许多帖子

这是我们的问题: 有没有办法只计算有多少唯一用户创建了一个已使用给定标记标记的页面或帖子?

在我们的代码模型中:

function getSupportingUserCount($tag_id)
{
    $user_count = $this->find(?);
    return $user_count;
}

1 个答案:

答案 0 :(得分:1)

如果你有很多行,你可以避免可能会很慢的连接。首先获取tagid,然后通过User模型关联搜索该id。

$tag = $this->Tag->find('first', array('conditions'  => array('Tag.name' => 'blahblah'), 'recursive'  => -1);
$tag_id = $tag['Tag']['id'];
$this->User->find('count', array('conditions'  => "OR" => array (
    array('Page.tag_id'  => $tag_id,
          'Post.tag_id'  => $tag_id )
));

(未经测试的代码,因此可能存在拼写错误)

(旁白:你确定每个帖子都有很多用户吗?通常帖子只有1位作者)