Laravel 9 Eloquent WHERE Like Query 예제 튜토리얼

응용 프로그램에 검색 양식을 넣을 때 일치하는 패턴을 얻으려면 like 쿼리를 사용해야 합니다. LIKE 쿼리는 열에서 지정된 패턴을 검색하기 위해 WHERE 절에서 사용됩니다. LIKE MySQL 키워드와 % 와일드카드 문자를 where 절과 함께 사용할 수 있습니다.

laravel에서는 whereLike() eloquent 메소드를 사용하여 laravel where like search query, laravel where like multiple columns 및 laravel collection with where like를 구현할 수 있습니다.

예 1: Like 쿼리가 Eloquent 모델과 함께 사용되는 Laravel



LIKE MySQL 키워드 및 % 와일드카드 문자를 where 절과 함께 사용할 수 있습니다.

다음 예는 사용 방법을 나타냅니다.

public function index(){
    $users = User::where('name','LIKE',"%{$search}%")->get();
    return $users;                
}


위의 주어진 whereNull 쿼리를 덤프하면 다음 SQL 쿼리가 표시됩니다.

SELECT * FROM `users` WHERE `name` LIKE '%search%';


예 2: Like와 함께 매크로 사용



매크로를 정의하려면 매크로를 정의하려는 클래스에서 매크로 정적 메서드를 사용하기만 하면 됩니다. Eloquent 클래스에 대한 매크로를 정의해야 하므로 다음과 같이 확장할 수 있습니다(서비스 제공자의 boot 메소드에서).

Builder::macro('whereLike', function($column, $search) {
  return $this->where($column, 'LIKE', "%{$search}%");
});


이제 이 매크로를 사용하는 방법은 간단합니다.

public function index(){
  return User::whereLike('username', $username)
   ->whereLike('email', $email)
   ->get();
}


예 3: 매크로를 사용하는 여러 열이 있는 Laravel whereLike



여러 열로 검색하려면 이 매크로를 확장하여 여러 열을 지원해야 합니다.

Builder::macro('whereLike', function($columns, $search) {
  $this->where(function($query) use ($columns, $search) {
    foreach(\Arr::wrap($columns) as $column) {
      $query->orWhere($column, $search);
    }
  });

  return $this;
});


이제 단일 열을 전달하고(array_wrap 함수를 사용하여 배열로 변환) 해당 열을 검색하지만 배열에 여러 열을 추가하면 모든 열을 반복하고 검색어를 모두 검색합니다. 그 열의. whereLike 쿼리가 Eloquent 모델에서 수행할 수 있는 다른 where 쿼리를 망치는 것을 원하지 않기 때문에 모든 것이 where 쿼리에 래핑됩니다.

이제 이 매크로를 다음과 같이 사용할 수 있습니다.

public function index(){
 return User::whereLike(['username', 'email'], $search)->get();
}


이 기사를 읽어 주셔서 감사합니다.

좋은 웹페이지 즐겨찾기