ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Trait 로 model Scopes 정리하기
    백엔드/laravel 2024. 1. 20. 18:45

     

    트레이트(Trait)는 Laravel 모델의 스코프를 정리하고 중복을 피하며 코드를 구조화하는 데 효과적인 방법이다.

    Post 모델의 스코프를 트레이트로 정리하는 방법을 알아보겠습니다.

     

    1. 트레이트 생성하기

        먼저, app/Models 디렉터리에 PostScopes.php라는 이름의 트레이트 파일을 만듭니다.

     

        app/Models/PostScopes.php 생성

        namespace App\Models;

        trait PostScopes
        {
            public function scopePublished($query)
            {
                return $query->where('is_published', true);
            }

            public function scopePublishedByUser($query, $userId)
            {
                return $query->where('user_id', $userId)->whereNotNull('created_at');
            }
        }

     

    2. 트레이트 적용하기

        이제 Post 모델에서 위에서 만든 트레이트를 사용하도록 수정합니다.

     

        app/Models/Post.php 생성


        namespace App\Models;

        use Illuminate\Database\Eloquent\Model;

        class Post extends Model
        {
            use PostScopes;

            // 모델의 나머지 부분...
        }

     

    3. 트레이트의 스코프 사용하기

     

        // 게시된 모든 포스트 가져오기
        Post::published()->get();

        // 특정 사용자가 작성한 게시물 가져오기
        Post::publishedByUser(1)->get();

     

    결론:

    트레이트를 사용하여 모델 스코프를 깔끔하게 정리하면 코드의 가독성이 향상되고 유지보수가 용이해집니다.

    중복된 스코프를 방지하고 모델을 보다 모듈화된 구조로 만들어 코드를 관리하기 쉽게 할 수 있습니다.

     

     

     

     

     

    댓글

Designed by Tistory.