-
Local Scopes 와 Dynamic Scopes 사이의 주요 차이 중 하나백엔드/laravel 2024. 1. 20. 18:27
로컬 스코프(Local Scopes):
로컬 스코프는 인자를 받지 않습니다. 로컬 스코프는 주로 고정된 조건을 적용하여 자주 사용되는 쿼리를 간편하게 사용할 수 있도록 하는 데 중점을 둡니다. 로컬 스코프를 정의할 때는 메서드에서 하드 코딩된 조건을 지정하며, 쿼리 빌더를 반환합니다.
// 로컬 스코프 정의
public function scopePublished($query)
{
return $query->where('is_published', true);
}
// 사용 예
$publishedPosts = Post::published()->get();다이내믹 스코프(Dynamic Scopes):
다이내믹 스코프는 인자를 받아 런타임에 동적으로 쿼리를 수정하는 데 중점을 둡니다. 동적 스코프를 정의할 때는 메서드에 추가 매개변수를 설정하고, 해당 매개변수를 사용하여 쿼리를 동적으로 조작합니다.
// 다이내믹 스코프 정의
public function scopePublishedByUser($query, $userId)
{
return $query->where('user_id', $userId)->whereNotNull('created_at');
}
// 사용 예
$userPosts = Post::publishedByUser(1)->get();로컬 스코프는 정적이고 고정된 쿼리 패턴을 추상화하는 데 사용되며, 다이내믹 스코프는 런타임에 유연하게 조건을 변경해야 할 때 유용합니다.
'백엔드 > laravel' 카테고리의 다른 글
Laravel에서 Eloquent ORM과 Query Builder 사용 비교 (0) 2024.01.20 Trait 로 model Scopes 정리하기 (0) 2024.01.20 라라벨 dynamic scope. (0) 2024.01.20 라라벨 local scopes (0) 2024.01.20 라라벨 global scopes (2) 2024.01.20