TP5.1 whereOr查詢


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM