2016-07-27 15:44:07 3586次浏览 3条回答 1 悬赏 20 金钱
public function getComments() {
    //return $this->hasMany(EsyComment::className(),['esy_id'=>'esy_id'])->where('esy_comment.is_delete=0')->orderBy("esy_comment.create_at desc")->limit(3);
}
补充于 2016-07-29 10:28

问题已经解决 不是加where 应该加
return $this->hasMany(EsyComment::className(),['esy_1id'=>'esy_id'])->onCondition(['esy_comment.is_delete' => 0])->orderBy("esy_comment.create_at desc")->limit(3);
这个样子 可以在on条件里添加一个and条件

补充于 2016-07-29 10:31

但是新的问题随之而来 索引不能用了 hasmany 排序是使用中间表 这种情况是使用不到索引的 这种情况如何避免(还是用hasmany的情况下)如何优化这条语句:大家有什么好的经验没有 望:大婶指教!

  • 回答于 2016-07-28 08:27 举报

    不好直接加where,最好是用andWhere

  • 回答于 2016-07-28 10:20 举报

    太复杂的语句建议用原生SQL 。你懂的

    1 条回复
    回复于 2016-07-29 10:39 回复

    新入手yii2 方法还不算很熟

  • 回答于 2016-07-28 15:24 举报

    hasMany()返回的是关联表模型的query,后边跟where不用表名吧

    1 条回复
    回复于 2016-07-29 10:38 回复

    where,order会拼到语句中 个人觉得加上点好 limit是只对应子表的可以控制关联出几条数据 这个还是比较方便的

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

夭折的青春 天堂十二层

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

热门问题