*/ protected $fillable = [ 'extension_id', 'version', 'content', 'changes_summary', 'created_by', ]; /** * updated_at 타임스탬프 비활성화 * * @var bool */ public const UPDATED_AT = null; /** * 속성 캐스팅 * * @return array */ protected function casts(): array { return [ 'content' => 'array', 'changes_summary' => 'array', 'created_at' => 'datetime', ]; } /** * 레이아웃 확장과의 관계 */ public function extension(): BelongsTo { return $this->belongsTo(LayoutExtension::class, 'extension_id'); } /** * 생성자와의 관계 */ public function creator(): BelongsTo { return $this->belongsTo(User::class, 'created_by'); } /** * 최신 버전순으로 정렬 * * @param Builder $query * @return Builder */ public function scopeLatest($query) { return $query->orderBy('version', 'desc')->orderBy('created_at', 'desc'); } /** * 오래된 버전순으로 정렬 * * @param Builder $query * @return Builder */ public function scopeOldest($query) { return $query->orderBy('version', 'asc')->orderBy('created_at', 'asc'); } }