tp5 給的whereOr方法在不仔細閱讀文檔的情況下會遇到一些問題
先看下代碼:
$this->modelLineModel->where('status',1)->whereOr(['area1_id'=>2341,'area2_id'=>2])->select();
想着應該是whereOr里面的並且的關系,然后或者上stauts=1 , 然而並非如此,它的sql為:
SELECT * FROM `sdb_line` WHERE `area1_id` = 2341 OR `area2_id` = 2 AND `status` = 1
怎么才能達到上面想要的結果呢?仔細看下文檔就明白了:
$map1 = [ ['name', 'like', 'thinkphp%'], ['title', 'like', '%thinkphp'], ]; $map2 = [ ['name', 'like', 'kancloud%'], ['title', 'like', '%kancloud'], ]; Db::table('think_user') ->whereOr([ $map1, $map2 ]) ->select();
生成的sql為:
SELECT * FROM `think_user` WHERE ( `name` LIKE 'thinkphp%' AND `title` LIKE '%thinkphp' ) OR ( `name` LIKE 'kancloud%' AND `title` LIKE '%kancloud' )
看到文檔的列子就基本知道用法了
by:wangyang
