model('deal')->field('sum(binary(`price`)*`count`) `sum`')->find();
Db::table("tp_deal")->field('sum(binary(`price`)*`count`) `sum`')->find();两种写法,按照我理解的逻辑,查询出来应该是一样的结果,但是为什么会不一样。直接在mysql里边写
select sum(binary(`price`)*`count`) from tp_deal;第二种的写法的查询结果是对的----------------------------------分割线---------------------------
通过看getLastSql 知道,第一种写法包含该action里边使用过的一个where条件(因为model函数,是单例模式),所以,做了如果下实验
$deal1 = new Deal(); //新建第一个Deal对象
$deal1->where('user_id',">","1")->order("add_time DESC"); //组装第一个Deal模型
$deal2 = new Deal(); //新建第二个Deal对象
$deal2->field('sum(binary(`price`)*`count`) `sum`')->find();//用第二个Deal对象进行查询
$deal2->getLastSql(); //返回值是 select sum(binary(`price`)*`count`) `sum` from `tp_deal` where `user_id` > 1 order by add_time DESC@流云 new也是单例模式?
111.png
( 5.8 KB 下载:2 次 )
最佳答案