Laravel에서는 복잡한 쿼리 조건을 구축하는 것이 매우 일반적인 요구 사항입니다. 동시에 여러 조건을 충족하는 데이터를 쿼리해야 하는 경우도 있고, 필드의 최대값 또는 최소값을 쿼리해야 하는 경우도 있고, 특정 조건을 충족하지 않는 데이터를 쿼리해야 하는 경우도 있습니다. 이 글에서는 이러한 요구사항을 달성하기 위해 Laravel의 쿼리 빌더를 사용하는 방법을 소개합니다.
먼저 라라벨의 기본 쿼리 구문을 살펴보겠습니다. Laravel에서는 DB Facade의 table() 메서드를 사용하여 쿼리하려는 테이블을 지정한 다음 select() 메서드를 사용하여 쿼리해야 하는 필드를 지정할 수 있습니다.
예를 들어 다음 코드는 사용자 테이블의 모든 레코드를 쿼리하고 해당 레코드의 ID 및 이름 필드를 반환합니다.
DB::table('users')->select('id', 'name')->get();
where() 메서드를 사용하여 쿼리 조건을 지정할 수도 있습니다. 예를 들어, 다음 코드는 18세보다 오래된 users 테이블의 레코드를 쿼리합니다.
DB::table('users')->where('age', '>', 18)->get();
동시에 여러 조건을 충족해야 하는 경우 where()를 사용할 수 있습니다. 쿼리 조건을 결합하는 방법입니다.
예를 들어 다음 코드는 사용자 테이블에서 18세 이상 남성 레코드를 쿼리합니다.
DB::table('users')->where('age', '>', 18)->where('gender', 'male')->get();
orWhere() 메서드를 사용하여 조건 중 하나가 충족되도록 지정할 수도 있습니다.
예를 들어 다음 코드는 나이가 18세 이상이거나 성별이 남성인 레코드에 대해 사용자 테이블을 쿼리합니다.
DB::table('users')->where('age', '>', 18)->orWhere('gender', 'male')->get();
여러 조건의 조합이 필요한 경우 클로저를 사용하여 이를 달성할 수 있습니다.
예를 들어, 다음 코드는 18세 이상, 성별은 남성, 나이는 18세, 성별은 여성이라는 요구 사항을 충족하는 레코드를 사용자 테이블에 쿼리합니다.
DB::table('users')->where(function($query) { $query->where('age', '>', 18) ->where('gender', 'male'); })->orWhere(function($query) { $query->where('age', '=', 18) ->where('gender', 'female'); })->get();
특정 분야의 일부를 토대로 문의하다. 유사() 메소드와 와일드카드를 사용하여 퍼지 쿼리를 구현할 수 있습니다. 다음 코드는 이름이 "J"로 시작하는 사용자 테이블의 레코드를 쿼리합니다.
DB::table('users')->where('name', 'like', 'J%')->get();
때때로 특정 필드의 최대값 또는 최소값을 쿼리해야 하는 경우가 있습니다. max() 및 min() 메소드를 사용하여 이를 수행할 수 있습니다. 다음 코드는 사용자 테이블에 있는 age 필드의 최대값과 최소값을 쿼리합니다.
$maxAge = DB::table('users')->max('age'); $minAge = DB::table('users')->min('age');
때때로 필드가 특정 값과 같지 않은 레코드를 쿼리해야 하는 경우가 있습니다. 이를 달성하기 위해 where() 메소드와 <> 기호를 사용할 수 있습니다. 다음 코드는 성별이 남성이 아닌 사용자 테이블의 레코드를 쿼리합니다.
DB::table('users')->where('gender', '<>', 'male')->get();
때로는 특정 값 목록에서 특정 필드의 레코드를 쿼리해야 할 때가 있습니다. whereIn() 메소드와 값 목록을 사용하여 이를 수행할 수 있습니다. 다음 코드는 age 필드 값이 18, 19 또는 20인 users 테이블의 레코드를 쿼리합니다.
DB::table('users')->whereIn('age', [18, 19, 20])->get();
whereNotIn() 메서드를 사용하여 값 목록에 없는 레코드를 쿼리할 수도 있습니다.
때로는 특정 조건이 존재하거나 존재하지 않는 레코드를 쿼리해야 할 때가 있습니다. 이를 달성하기 위해 whereExists() 및 whereNotExists() 메서드를 사용할 수 있습니다. 다음 코드는 주문 테이블에서 사용자에 해당하는 레코드를 쿼리합니다.
DB::table('orders') ->whereExists(function ($query) { $query->select(DB::raw(1)) ->from('users') ->whereRaw('users.id = orders.user_id'); }) ->get();
whereNotExists() 메서드를 사용하여 존재하지 않는 사용자에 해당하는 레코드를 쿼리할 수도 있습니다.
이제 Laravel에서 복잡한 쿼리 조건을 구성하는 기본 방법을 소개했습니다. Laravel의 쿼리 빌더를 사용하면 SQL 구문의 세부 사항에 대해 너무 많이 생각할 필요 없이 쿼리 문을 작성하는 것이 더 쉽고 직관적입니다. 물론 위의 내용은 쿼리 문의 빙산의 일각에 불과합니다. Laravel의 쿼리 빌더에는 우리가 발견하기를 기다리는 많은 고급 용도가 있습니다.
위 내용은 Laravel에서 복잡한 쿼리 조건을 작성하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!