docs: 규칙 및 원칙 문서 체계 추가
- standards/ 폴더 추가 (코딩 규칙: 네이밍, 스타일) - rules/ 폴더 추가 (비즈니스 규칙: 검증, 도메인 로직) - principles/ 폴더 추가 (설계 원칙: 아키텍처, API 설계) - INDEX.md에 규칙 및 원칙 섹션 추가 - 각 폴더에 README.md 생성
This commit is contained in:
@@ -21,6 +21,60 @@
|
||||
- Common columns: tenant_id, created_by, updated_by, deleted_by (COMMENT required)
|
||||
- FK constraints: Created during design, minimal in production
|
||||
|
||||
### 2.1 ModelTrait 사용 가이드
|
||||
|
||||
`ModelTrait`는 모든 모델에서 공통으로 사용하는 기능을 제공합니다.
|
||||
|
||||
**위치**: `app/Traits/ModelTrait.php`
|
||||
|
||||
**제공 기능**:
|
||||
```php
|
||||
// 1. 날짜 직렬화 포맷 (Y-m-d H:i:s)
|
||||
protected function serializeDate(DateTimeInterface $date)
|
||||
|
||||
// 2. Active 상태 조회 Scope
|
||||
public function scopeActive($query)
|
||||
// 사용: Model::active()->get()
|
||||
// SQL: WHERE is_active = 1
|
||||
```
|
||||
|
||||
**⚠️ 필수 요구사항**:
|
||||
|
||||
`scopeActive()` 메서드 사용 시 테이블에 `is_active` 컬럼이 **반드시 존재해야 함**
|
||||
|
||||
```sql
|
||||
-- 마이그레이션 예시
|
||||
$table->boolean('is_active')
|
||||
->default(true)
|
||||
->comment('활성화 여부 (ModelTrait::scopeActive() 사용)');
|
||||
```
|
||||
|
||||
**모델 설정**:
|
||||
```php
|
||||
class YourModel extends Model
|
||||
{
|
||||
use BelongsToTenant, ModelTrait, SoftDeletes;
|
||||
|
||||
protected $fillable = [
|
||||
// ...
|
||||
'is_active', // 반드시 추가
|
||||
];
|
||||
|
||||
protected $casts = [
|
||||
'is_active' => 'boolean', // 반드시 추가
|
||||
];
|
||||
}
|
||||
```
|
||||
|
||||
**is_active 컬럼 적용 테이블** (2025-12-05 기준):
|
||||
| 테이블 | is_active | 비고 |
|
||||
|--------|-----------|------|
|
||||
| materials | ✅ 있음 | |
|
||||
| products | ✅ 있음 | |
|
||||
| item_pages | ✅ 있음 | |
|
||||
| item_fields | ✅ 있음 | 2025-12-05 추가 |
|
||||
| item_sections | ❌ 없음 | 필요시 마이그레이션 추가 |
|
||||
|
||||
---
|
||||
|
||||
## 3. Middleware Stack
|
||||
|
||||
Reference in New Issue
Block a user