官方文档地址:https://www.kancloud.cn/manual/thinkphp5/265566
有些时候,并不需要获取关联数据,而只是希望获取关联数据的统计(关联统计仅针对一对多或者多对多的关联关系
),这个时候可以使用withCount方法进行制定关联的统计。
应用场景:如查询文章列表时,我们需要统计每篇文章的评论数量。
涉及到的表:
表 | 主要字段 |
---|---|
news | id、 title、content |
news_comments | id、 news_id、content |
以前我的lowb作法
// 文章列表
$list = Db::name('news')->select();
foreach($list as $k => $v){
// 循环查询 文章评论数
$list[$k]['comment_num'] = Db::name("news_comments")->where("news_id",$v["id"])->count(); //
}
dump($list);
现在使用模型方法后
// 文章列表
$list = model('news')->withCount('newscomments')->select();
dump($list);
注意:该模型为一对多关联,即一篇文章对应多条评论,在文章模型中应该建立如下关联:
public function newscomments(){
return $this->hasMany('NewsComments');
}
这样就实现了在查询文章列表时,将每篇文章的评论数关联出来了。