where('name','like&#"/> where('name','like&#">

 >  기사  >  PHP 프레임워크  >  thinkphp에서 퍼지 쿼리를 수행하는 방법

thinkphp에서 퍼지 쿼리를 수행하는 방법

WBOY
WBOY앞으로
2023-05-27 17:10:511697검색

먼저 ThinkPHP에서는 Db 클래스를 통해 데이터베이스를 운용할 수 있습니다. Db 클래스의 table 메소드를 사용하여 어떤 데이터 테이블을 조작할지 지정한 다음 해당 쿼리 메소드를 호출하여 조작할 수 있습니다. 퍼지 쿼리를 수행할 때 like 메소드를 사용할 수 있습니다. 퍼지 매칭이 필요한 필드 이름은 이 메소드의 첫 번째 매개변수로 사용되며, 일치가 필요한 문자열은 두 번째 매개변수로 사용됩니다. 예를 들어, 이름에 "Zhang"이 포함된 모든 사용자를 쿼리하려면 다음과 같은 코드를 작성할 수 있습니다.

Db::table('user')->where('name', 'like', '%张%')->select();

이 명령문에서 where 메소드의 첫 번째 매개변수는 쿼리할 조건입니다. where 'name' 는 데이터 테이블 Name의 필드이고, 두 번째 매개변수 'like'는 퍼지 매칭을 수행함을 나타내며, 세 번째 매개변수 '%张%'는 일치해야 하는 문자열입니다. % 와일드카드 문자를 사용하면 임의 개수의 문자가 포함된 문자열을 일치시킬 수 있으므로 사용자 이름에 "张"이 포함된 모든 사용자를 찾을 수 있습니다.

ThinkPHP는 Db 클래스에서 제공하는 쿼리 메서드 외에도 모델 쿼리, 관련 쿼리 등과 같은 좀 더 고급 쿼리 메서드도 제공합니다. 모델 클래스를 정의하면 모델 쿼리가 정의된 모델 클래스를 사용하여 구현되므로 쿼리가 단순화됩니다. 예를 들어 User 모델에 searchByName 메소드를 정의하여 이름에 지정된 문자열이 포함된 모든 사용자를 쿼리할 수 있습니다.

class User extends Model
{
    public function searchByName($keyword)
    {
        return $this->where('name', 'like', '%' . $keyword . '%')->select();
    }
}

이 메소드에서 $this는 현재 User 모델의 객체를 나타내며 where 메소드는 다음과 같습니다. 위에서 설명한 대로 Db 클래스를 $this로 바꾸면 됩니다. 이 쿼리 메소드를 애플리케이션의 어느 곳에서나 재사용할 수 있도록 캡슐화할 수 있습니다

class User extends Model
{
    public static function searchByName($keyword)
    {
        return self::where('name', 'like', '%' . $keyword . '%')->select();
    }
}

여기서 searchByName 메소드를 정적 메소드로 변경하고 $this를 self로 대체하여 User가 어디서나 ::searchByName() 메소드를 직접 호출할 수 있도록 합니다. 쿼리하는 데 사용됩니다.

연관 쿼리는 JOIN 문을 사용하여 관련된 여러 데이터 테이블을 연결하여 쿼리하는 방법입니다. ThinkPHP의 관련 쿼리는 모델 연결을 정의하여 구현됩니다. 그러나 퍼지 쿼리를 수행할 때 JOIN 문을 사용하면 쿼리 효율성이 저하될 수 있다는 점에 유의해야 합니다. 퍼지 쿼리를 먼저 수행한 다음 관련 쿼리를 수행하거나 캐싱 및 기타 방법을 사용하여 쿼리 속도를 높이십시오.

위 내용은 thinkphp에서 퍼지 쿼리를 수행하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제