如何根据用户ID 查询用户留言总数?

#1 yuyu775

用户表与留言表一对多关联,关联字段为uid ;
然后想把用户列表与留言数一次显示出来,也就是在显示每个用户信息时,同时显示该用户留言总数;

 
    //根据用户id查询留言数量
    public function getMsgNumsByUid($uid){
        $conditions = array('uid' => $uid);
        $results = $this->findCount($conditions);
        return $results;
    }


因为我是想显示出每个用户的留言数,写了上面这个方法,但是突然不知道如何给他传uid,传了以后如何能让留言数和用户信息一起遍历出来。求高手指点啊,感激不尽!

2010-08-02 15:16:12

#2 jake

首先,用户对留言的一对多关联是可以直接查找用户并查找出用户关联的留言,对吧。所以上面的getMsgNumsByUid是不需要的,因为关联查找已经实现了它的功能。

然后看这里
http://speedphp.com/post/splinker-hasone.html

关联条件中,可以加入一个'countonly' => true,这样在关联查找的时候,返回的结果仅会是关联总数,而不会返回关联的记录。

2010-08-02 18:09:57

#3 yuyu775

谢谢 按照JAKE的方法问题已经解决了,不过还有个疑问,如果我在别的地方又要显示关联的总数目,又要显示关联的信息怎么办啊?

是不是在关联中 写两个array?

 

var $linker = array(
08        array(
09            'type' => 'hasmany',   
10            'map' => 'guestbook',
11            'mapkey' => 'user_id',
12            'fclass' => 'guestbook',
13            'fkey' => 'user_id',
14            'enabled' => true
15        ),
16        array(
17            'type' => 'hasmany',
18            'map' => 'nums',
19            'mapkey' => 'user_id',
20            'fclass' => 'guestbook',
21            'fkey' => 'user_id',
22            'countonly' => true,
23            'enabled' => true
24        ),
    )

2010-08-02 23:25:18

#4 jake

回复 3 yuyu775

YES! 就是两个关联,甚至是多个关联,这点在winblog里面也有例子。

不过一般而言,“计算关联总数的关联”和“获取关联记录的关联”一起用的时候,“获取关联记录的关联”都只会获取部分关联结果,而不会是获取全部结果,否则“计算关联总数的关联”就没意义了(直接对“全部结果”count一下就知道关联总数了)。


而获取部分关联结果,也就是
http://speedphp.com/post/splinker-hasone.html
文章内除了countonly之外的 limit 属性来控制的,和findAll的limit参数一样,可以限制返回结果的数量和位置。

2010-08-03 09:29:58

#5 yuyu775

Ok  俺明白了  谢谢JAKE 老大

2010-08-03 10:03:55