>  기사  >  백엔드 개발  >  다중 필드 퍼지 매칭 쿼리를 구현하는 ThinkPHP 방법

다중 필드 퍼지 매칭 쿼리를 구현하는 ThinkPHP 방법

不言
不言원래의
2018-05-03 16:10:432547검색

이 글에서는 다중 필드 퍼지 매칭 쿼리를 구현하기 위한 thinkPHP의 방법을 주로 소개하고, 퍼지 매칭 쿼리에 대한 thinkPHP의 관련 모델 연산 및 SQL 문을 예제 형식으로 분석하여 도움이 필요한 친구들이 참고할 수 있습니다

예제 이 기사에서는 thinkPHP에서 필드 퍼지 매칭 쿼리 방법의 다중 필드 퍼지 매칭 쿼리 구현을 설명합니다. 참조할 수 있도록 모든 사람과 공유하세요. 세부 사항은 다음과 같습니다.

소개: 때로는 쿼리가 여러 필드와 일치해야 하는 경우가 있습니다. 예를 들어 주소를 쿼리할 때 주소는 여러 필드로 구성됩니다. 도, 시, 구 등의 정보와 함께 상세 주소가 있습니다. 이때 쿼리는 어떻게 하나요?

다른 필드에 동일한 쿼리 조건을 구현하세요

$User = M("User"); // 实例化User对象
$map['name|title'] = 'thinkphp';
// 把查询条件传入查询方法
$User->where($map)->select();

프로젝트에서 사용하세요

if ($address) {
  // 地址查询
  $where['b.province|b.city|b.area|b.detail'] = array('like', '%'.$address.'%');
        $this->assign('address', $address);
}

이 요구 사항은 매우 간단하고 정확하게 해결됩니다.

생성된 sql문은 다음과 같습니다

SELECT a.*,b.name,b.tel,b.province,b.city,b.area,b.detail,b.zipcode
FROM sh_order a
LEFT JOIN sh_member_address b on a.member_id = b.member_id and b.selected = 1
WHERE ( `store_id` = '10' ) AND ( a.member_id IN ('7') ) AND ( (b.province LIKE '%宿城区%') OR (b.city LIKE '%宿城区%') OR (b.area LIKE '%宿城区%') OR (b.detail LIKE '%宿城区%') )
ORDER BY addtime desc, sendtime asc, paytime desc
LIMIT 0,10

SQL문을 보면 괄호와 AND, OR가 아주 교묘하게 조합되어 있는 것을 알 수 있습니다.

스크린샷은 다음과 같습니다

관련 권장 사항:

Framework Thinkphp5 동작 Hook Hook의 간단한 구현

위 내용은 다중 필드 퍼지 매칭 쿼리를 구현하는 ThinkPHP 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.