谁一开始就是大神?

\yii\db\Query()会携带上次查询的order,limit,offset?[2.0]

$database = new \yii\db\Query();
$sql1 = $database->select([])->from('aa')->Where(['is_del'=>0])->offset(10)->limit(10)->orderby('id desc')->createCommand()->getRawSql();
$sql2 = $database->select([])->Where(['isdel'=>0])->from('bb')->createCommand()->getRawSql();

输出sql:

sql1:"SELECT * FROM `aa` WHERE `is_del`=0 ORDER BY `id` DESC LIMIT 10 OFFSET 10"                   
sql2:"SELECT * FROM `bb` WHERE `isdel`=0 ORDER BY `id` DESC LIMIT 10 OFFSET 10"

输出的sql2为什么会带着sql1orderlimitoffset
除了重新new一个对象之外,有什么其他解决办法吗?
这很奇怪啊,总不能每次查询都新new一个吧。

1、new \yii\db\Query() 是一个对象,设置order,limit,offset是设置了对象的三个属性,下次再使用这个对象时,属性已经设置;
2、
3、如果是查询表相同,只是条件不同的话,可以使用clone;
每次要new一个新Query, Query会保存上次的查询状态

赞(0) 打赏
未经允许不得转载:菜鸟之家 » \yii\db\Query()会携带上次查询的order,limit,offset?[2.0]

评论 抢沙发

登录

找回密码

注册