2016-10-14 17:27:31 3357次浏览 3条回答 0 悬赏 50 金钱

hasmany查出的结果集,使用limit分页的话这个分页针对临时表导致分页失败,怎么解!大神有遇到过吗???

补充于 2016-10-17 13:56
//hasmany()
public function getComments(){
        return $this->hasMany(BEsyComment::className(),['esy_id'=>'esy_id'])->limit(2);
}
//使用
$list = BEssay::find()->joinWith("comments")->limit('10')->all();

打印$list 会有重复数据

最佳答案

  • 高山流水 发布于 2016-10-18 09:33 举报

    我也遇到这个问题。关注一下!

    3 条回复
    回复于 2016-10-18 09:40 回复

    我的理解是:两张表是一对多的关系,查询之后会生成一个中间表导致主表的记录会有重复!暂时没有想到解决办法,可以不使用hasmany(),查完通过foreach或者toarray再补全一下,菜鸟一枚,勿喷!

    回复于 2016-10-18 09:49 回复

    因为记录总数是子表的记录数,我有一个临时解决的办法,如果你数据量不大可以考虑。在查询后面加groupBy('esy_id'),你试试是不是你想要的结果。我的数据量大,一分组查得好慢。

    回复于 2016-10-18 09:50 回复

    嗯嗯 给你一个赞

您需要登录后才可以回答。登录 | 立即注册
夭折的青春
副董事长

夭折的青春 天堂十二层

注册时间:2013-11-06
最后登录:2017-08-22
在线时长:2796小时35分
  • 粉丝35
  • 金钱3540
  • 威望0
  • 积分31500

热门问题