id ----- uid ----- name ----- name2
1 ----- 5 ----- wang ----- wanghu
2 ----- 10 ----- li ----- litao
$db=M('table1');
$map['id']=1;
$where['name']=array('like','%wa%');
$where['name2']=array('like','%wa%');
$where['_logic'] = 'or';
$map['_complex'] = $where;
//不解的地方
$a=$db->where($map);
$b=$db->where($map);
echo $a->sum('uid');
echo $b->sum('uid');
//最终输出5和15
//如果将最后4句调成
$a=$db->where($map);
echo $a->sum('uid');
$b=$db->where($map);
echo $b->sum('uid');
//这样就正确输出了全是5
/*
但现在程序遇到需要在前面进行where拼接判断,最后才进行数据的查询,
我以前用的程序可通过copy()把where拷贝一份出来,不知thinkphp有没有这个功能,比如别的程序将最后4句改成
*/
$a=$db->where($map);
$b=$a->copy();
echo $a->sum('uid');
echo $b->sum('uid');翻看了3.2手册没找到copy()这样的操作方法,还有有这样的功能但名字不叫copy 最佳答案