다중 테이블 연관 검색 기능의 문제점:
코드는 다음과 같습니다.
// 实现搜索功能 $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 . '%']; } // 定义分页参数 $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 위 코드에서 검색 기능을 구현하고 싶지만 검색은 $map 조건에서 수행됩니다. 첨부된 테이블의 필드가 조인을 통해 추가되었으므로 첨부된 테이블의 별칭을 사용하십시오. p.name, s.name과 같은 필드의 형식은 생성된 SQL 문에 모두 문제가 있습니다. 첨부된 테이블은 다음과 같이 필터링됩니다.
결과적으로 첨부된 테이블이 없어져 필드에 별칭을 추가하는 것은 잘못되었습니다.
2. 검색 조건을 테이블명.필드 형식으로 변경합니다. 이렇게 하면 기본 테이블의 필드를 검색하는 데는 문제가 없지만, SQL 문에서는 여전히 문제가 있습니다. 이렇게 생성하면 부록 테이블은 유지되지만 검색에는 여전히 문제가 있습니다. 오류는 다음과 같습니다. 누구든지 도와줄 수 있나요? 어떻게 해야 하나요? ? ?
두 개의 관련 테이블에서 데이터를 확인하기 위해 작성한 것 같습니다. parma를 사용하여 두 개의 값을 허용합니까?
이 작업을 수행할 수 있습니다. $where
하나의 값만 받은 다음 링크 쿼리와 "gruop" 그룹을 사용하여 시도해 보세요!
내 말이 맞는지 모르겠어요