('a'=1 and 'b'=2) or ('c'=3 and 'd'=4) and 'e'=5
$where_1['a'] = 1;
$where_1['b'] = 2;
$where_2['c'] = 3;
$where_2['d'] = 4;
$where_main['_complex'] = array(
$where_1,
$where_2,
'_logic' => 'or'
);
$where_main['e'] = 5;
$this->user->where($where_main)->select();
SELECT * FROM `ecs_order_info` WHERE ( ( `order_status` = 5 AND `shipping_status` = 2 ) OR `order_status` = 6 ) AND `user_id` = 1
上面標紅的where查詢語句在TP中的拼接如下:
$order=M('order_info');
$where['order_status']=5;
$where['shipping_status']=2;
$map['_complex'] = $where;
$map['order_status']=6;
$map['_logic'] = 'or';
$final['_complex'] = $map;
$final['user_id']=1;
然后直接查詢就可以了: $order->where($final)->select();
問題來了,怎么檢測我們寫的sql語句沒有錯呢?執行下面這條語句就可以了,只會翻譯成sql語句,不會執行。
echo $order->where($final)->fetchSql(true)->select();
---------------------
作者:gerberasn
來源:CSDN
原文:https://blog.csdn.net/landylxy/article/details/70139841
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!