Laravel 프레임 워크에서 쿼리 스코프는 개발자가 공통 쿼리 로직을 재사용 가능한 방법으로 캡슐화 할 수있는 강력한 기능입니다. 쿼리 스코프를 사용하여 개발자는 컨트롤러 또는 기타 부품의 복잡한 쿼리 조건을 추상화하여 코드를 간단하고 유지 관리 할 수 있습니다. 이는 코드 복제를 피하는 데 도움이 될뿐만 아니라 쿼리 로직의 명확성을 크게 향상시킵니다.
Laravel에서는 쿼리 범위를 만드는 것이 매우 간단합니다. 웅변 모델에서 스코프 로 접두사를 정의하면됩니다. 다음은 모든 활성 사용자를 얻는 쿼리 범위를 만드는 방법을 보여주는 예입니다.
public function scopeActive($query) { return $query->where('active', 1); }
위의 코드에서 Scopeattive 메소드는 활성 필드 1으로 레코드를 걸러내는 쿼리 범위를 정의합니다.이 쿼리를 어디서나 실행하여 메소드를 호출 할 수 있습니다.
쿼리 범위가 정의되면 Laravel에서 직접 사용할 수 있습니다. 다음 코드는 모든 활성 사용자를 얻는 방법을 보여줍니다.
$activeUsers = User::active()->get();
이런 식으로 동일한 쿼리 로직을 반복적으로 작성하지 않고 기준을 충족하는 사용자를 쉽게 얻을 수 있습니다.
Laravel은 또한 여러 쿼리 스코프의 조합을 지원하므로 여러 쿼리 조건을 체인하여 쿼리 유연성을 크게 향상시킬 수 있습니다. 최근에 만든 사용자를 필터링하기 위해 쿼리 범위를 정의한다고 가정 해 봅시다.
public function scopeRecent($query) { return $query->orderBy('created_at', 'desc'); }
이 두 쿼리 스코어를 결합하여 활성 및 최신 생성 사용자를 쿼리 할 수 있습니다.
$recentActiveUsers = User::active()->recent()->get();
이런 식으로 모든 활성 사용자를 동시에 얻고 생성 시간에 따라 내림차순으로 정렬 할 수 있습니다.
쿼리 스코프를 사용하면 몇 가지 명백한 장점이 있습니다.
Laravel Query Scopes는 복잡한 쿼리 로직을 관리하고 재사용하는 우아한 방법을 제공합니다. 쿼리 범위를 합리적으로 사용하여 개발자는 코드의 유지 관리 및 재사용 성을 향상시키고, 중복 코드의 발생을 줄이며, Laravel 애플리케이션을보다 확장 가능하게 할 수 있습니다. 쿼리 스코프를 시도하지 않았다면 이제 쿼리 스코프를 사용하기 시작하고보다 유연하고 효율적인 개발 경험을 즐길 차례입니다.