ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 라라벨 global scopes
    백엔드/laravel 2024. 1. 20. 16:51

     

    전역 범위(global scopes)는 특정 모델에 대해 실행되는 모든 쿼리에 제약 조건을 추가할 수 있는

    eloquent의 강력한 기능입니다.

     

    사용자 모델이 있고 잔액이 특정 숫자보다 적은 사용자만 검색하고 싶다고 가정해 보겠습니다.

     

    1. 전역 범위 생성하기

         php artisan make:scope BalanceVerifiedScope

     

         app\Models\Scopes\BalanceVerifiedScope.php 파일이 생성됨

         

        public function apply(Builder $builder, Model $model): void
        {
            $builder->where(column: 'balance', oprator: '<', value: 10000);
        }

     

         apply 메서드는 모델에 대해 실행되는 모든 쿼리에 추가되어야 하는 제약 조건을 정의하는 필수 메서드입니다.

         첫 번째 인수는 전역 범위가 적용되는 쿼리 빌더 인스턴스인 빌더 인스턴스입니다.

         그리고 전역 범위가 적용되는 모델 인스턴스인 모델이 있습니다.

         따라서 빌더 쿼리 개체를 사용해서 where 메서드를 연결하는 것입니다.

     

        app/Models/User.php 에 적용해 보겠습니다.

        protected static function boot()
        {
            static::addGlobalScope(new BalanceVerifiedScope);
        }

     

        booted() 메서드는 Laravel 모델의 수명 주기 후크 중 하나로, 모델이 부팅될 때 호출됩니다.

        이 메서드를 사용하면 모델이 처음 생성될 때 수행해야 하는 초기화 작업을 수행할 수 있습니다.

        모델 이벤트 리스너를 정의하거나 다른 초기화 작업을 수행하는 데 사용됩니다.

     

        예를 들어, 모델이 부팅될 때 특정 이벤트 리스너를 등록하거나 특정 속성을 초기화하는 등의 작업을 할 수 있습니다.

        이는 모델의 인스턴스가 생성되었을 때 실행되는 초기화 로직을 구현하는 데 유용합니다.

     

    스코프 임시로 비활성화하기

    $posts = User::withoutGlobalScopes()->get();

    댓글

Designed by Tistory.