>백엔드 개발 >PHP 튜토리얼 >Laravel Eloquent에서 여러 WHERE 절을 효율적으로 작성하려면 어떻게 해야 합니까?

Laravel Eloquent에서 여러 WHERE 절을 효율적으로 작성하려면 어떻게 해야 합니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-15 18:02:10152검색

How Can I Efficiently Craft Multiple WHERE Clauses in Laravel Eloquent?

Laravel Eloquent에서 여러 Where 절을 사용하여 쿼리 작성

Laravel Eloquent에서 데이터베이스 쿼리를 구성할 때 where 절을 사용하여 여러 조건을 지정해야 하는 시나리오가 발생할 수 있습니다. . 다중 where 호출이 일반적인 접근 방식인 반면, 고려해야 할 더 우아한 대안이 있습니다.

대체 접근 방식: 배열 기반 Where 조건(Laravel 5.3 이상)

Laravel은 더 간결한 방법을 제공합니다. 배열을 사용하여 여러 위치 조건을 지정하려면:

$query->where([
    ['column_1', '=', 'value_1'],
    ['column_2', '<>', 'value_2'],
    // ...
]);

이 접근 방식을 사용하면 여러 위치를 그룹화할 수 있습니다.

Laravel 5.3 이전에는 배열 메서드를 사용했습니다.

Laravel 5.3 이전에는 모두 동일한 연산자를 사용하는 경우 배열을 사용하여 여러 개의 where 조건을 지정할 수 있었습니다. (일반적으로 'and'):

$matchThese = ['field' => 'value', 'another_field' => 'another_value'];
$results = User::where($matchThese)->get();

이 방법은 유사한 쿼리를 생성합니다. 대상:

SELECT * FROM users
WHERE field = value AND another_field = another_value

복잡한 논리에 하위 쿼리 활용

더 복잡한 기준이 필요한 경우 where 절 내에서 하위 쿼리를 활용할 수 있습니다.

$subquery = User::where(...)->select('id')->where(...);
$results = User::whereIn('id', $subquery)->get();

이 예에서 하위 쿼리는 특정 기준을 충족하는 ID 집합을 반환한 다음 기본 쿼리를 필터링하는 데 사용됩니다. 쿼리.

사용 예

설명을 위해 특정 조건의 사용자를 검색하는 다음 쿼리를 고려해보세요.

$results = User::where('active', 1)
    ->where('verified', 1)
    ->where('country', 'United States')
    ->get();

위에 언급된 대체 접근 방식을 사용하면 쿼리는 다음과 같을 수 있습니다. 다음과 같이 작성:

// Array-based where (Laravel 5.3 and later)
$conditions = [
    ['active', '=', 1],
    ['verified', '=', 1],
    ['country', '=', 'United States'],
];
$results = User::where($conditions)->get();

// Array method (prior to Laravel 5.3)
$matchThese = ['active' => 1, 'verified' => 1, 'country' => 'United States'];
$results = User::where($matchThese)->get();

이러한 기술을 활용하면 더욱 간결하고 읽기 쉬운 쿼리를 생성하여 코드 유지 관리가 용이합니다.

위 내용은 Laravel Eloquent에서 여러 WHERE 절을 효율적으로 작성하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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