table1
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');