TP5.1 多表關(guān)聯(lián)查詢中實現(xiàn)搜索功能
問題描述
多表關(guān)聯(lián)搜索功能的問題:
代碼如下:
// 實現(xiàn)搜索功能$productName = Request::param('productName');$storeName = Request::param('storeName');if ( !empty($productName) && empty($storeName) ) { $map[] = ['p.name', 'like', '%' . $productName . '%'];} else if ( !empty($storeName) && empty($productName) ) { $map[] = ['s.name', 'like', '%' . $storeName . '%'];} else if ( !empty($productName) && !empty($storeName) ) { $map[] = ['p.name', 'like', '%' . $productName . '%']; $map[] = ['s.name', 'like', '%' . $storeName . '%'];}// 定義分頁參數(shù)$limit = isset($_GET['limit']) ? $_GET['limit'] : 10;$page = isset($_GET['page']) ? $_GET['page'] : 1;$stockList = StockModel::where($map) -> alias('sk') -> leftJoin('product p', 'sk.product_id = p.id') -> join('store s', 'sk.store_id = s.id') -> where('sk.status', 1) -> order('sk.product_id', 'desc') -> field('sk.*, p.name as product_name, s.name as store_name') -> page($page, $limit) -> select();
1、以上代碼中,想實現(xiàn)的搜索功能,但是$map條件中,因為搜索的是通過join加入的附表的字段,所以用附表的別名.字段的形式,如:p.name, s.name,這樣搜索有問題,生成的SQL語句中,把兩個附表都過濾了,如下:
這樣的結(jié)果附加表沒了,所以字段加了別名就不對了。
2、把搜索條件哪里,改成表名.字段的形式,這樣搜索主表的字段是沒問題,但是搜索附表還是有問題,這樣生成的SQL語句中,附表保留了,但是搜索還是有問題,報錯如下:
哪位大神幫忙看一下,這個要怎么做呢???
問題解答
回答1:看你這寫的是想在兩張關(guān)聯(lián)的表里查數(shù)據(jù)吧,你用parma接受兩個值嗎?
你可以這樣,只接收一個值$where
$map[] = ['p.name | s.name', 'like', '%' . $productName . '%'];
然后用鏈接查詢,再加上分組”gruop",試試看一下!
不知道我說的對不對
相關(guān)文章:
1. angular.js - angular內(nèi)容過長展開收起效果2. 關(guān)于nginx location配置的問題,root到底是什么3. 關(guān)于docker下的nginx壓力測試4. angular.js - angularjs的自定義過濾器如何給文字加顏色?5. docker鏡像push報錯6. python - flask表單 如何把提交多行數(shù)據(jù)在服務(wù)端讀取出來?7. python 怎樣用pickle保存類的實例?8. 并發(fā)模型 - python將進程池放在裝飾器里為什么不生效也沒報錯9. python的前景到底有大?如果不考慮數(shù)據(jù)挖掘,機器學(xué)習(xí)這塊?10. 大家好,請問在python腳本中怎么用virtualenv激活指定的環(huán)境?
