'boolean', 'sort_order' => 'integer', ]; protected $attributes = [ 'sort_order' => 0, 'is_active' => true, ]; // ========================================================================= // Relationships // ========================================================================= /** * 카테고리에 속한 수식들 */ public function formulas(): HasMany { return $this->hasMany(QuoteFormula::class, 'category_id') ->orderBy('sort_order'); } /** * 활성화된 수식만 */ public function activeFormulas(): HasMany { return $this->formulas()->where('is_active', true); } /** * 생성자 */ public function creator(): BelongsTo { return $this->belongsTo(User::class, 'created_by'); } /** * 수정자 */ public function updater(): BelongsTo { return $this->belongsTo(User::class, 'updated_by'); } // ========================================================================= // Scopes // ========================================================================= /** * Scope: 활성화된 카테고리 */ public function scopeActive(Builder $query): Builder { return $query->where('is_active', true); } /** * Scope: 정렬 순서 */ public function scopeOrdered(Builder $query): Builder { return $query->orderBy('sort_order'); } }