-
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();결론:
트레이트를 사용하여 모델 스코프를 깔끔하게 정리하면 코드의 가독성이 향상되고 유지보수가 용이해집니다.
중복된 스코프를 방지하고 모델을 보다 모듈화된 구조로 만들어 코드를 관리하기 쉽게 할 수 있습니다.
'백엔드 > laravel' 카테고리의 다른 글
Laravel Eloquent 모델 규칙과 설정 (0) 2024.01.20 Laravel에서 Eloquent ORM과 Query Builder 사용 비교 (0) 2024.01.20 Local Scopes 와 Dynamic Scopes 사이의 주요 차이 중 하나 (0) 2024.01.20 라라벨 dynamic scope. (0) 2024.01.20 라라벨 local scopes (0) 2024.01.20