feat: ItemMaster 데이터베이스 구조 구축 (9개 테이블)
- 마이그레이션 9개 생성 (unit_options, section_templates, item_master_fields, item_pages, item_sections, item_fields, item_bom_items, custom_tabs, tab_columns) - Eloquent 모델 9개 구현 (ItemMaster 네임스페이스) - ItemMasterSeeder 작성 및 테스트 데이터 생성 주요 특징: - Multi-tenant 지원 (BelongsToTenant trait) - Soft Delete 적용 (deleted_at, deleted_by) - 감사 로그 지원 (created_by, updated_by) - JSON 필드로 동적 속성 지원 (display_condition, validation_rules, options, properties) - FK 제약조건 및 Composite Index 설정 - 계층 구조 (ItemPage → ItemSection → ItemField/ItemBomItem) SAM API Development Rules 준수
This commit is contained in:
60
app/Models/ItemMaster/ItemSection.php
Normal file
60
app/Models/ItemMaster/ItemSection.php
Normal file
@@ -0,0 +1,60 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models\ItemMaster;
|
||||
|
||||
use App\Traits\BelongsToTenant;
|
||||
use App\Traits\ModelTrait;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||
|
||||
class ItemSection extends Model
|
||||
{
|
||||
use BelongsToTenant, ModelTrait, SoftDeletes;
|
||||
|
||||
protected $fillable = [
|
||||
'tenant_id',
|
||||
'page_id',
|
||||
'title',
|
||||
'type',
|
||||
'order_no',
|
||||
'created_by',
|
||||
'updated_by',
|
||||
'deleted_by',
|
||||
];
|
||||
|
||||
protected $casts = [
|
||||
'order_no' => 'integer',
|
||||
'created_at' => 'datetime',
|
||||
'updated_at' => 'datetime',
|
||||
'deleted_at' => 'datetime',
|
||||
];
|
||||
|
||||
protected $hidden = [
|
||||
'deleted_by',
|
||||
'deleted_at',
|
||||
];
|
||||
|
||||
/**
|
||||
* 소속 페이지
|
||||
*/
|
||||
public function page()
|
||||
{
|
||||
return $this->belongsTo(ItemPage::class, 'page_id');
|
||||
}
|
||||
|
||||
/**
|
||||
* 섹션의 필드 목록
|
||||
*/
|
||||
public function fields()
|
||||
{
|
||||
return $this->hasMany(ItemField::class, 'section_id')->orderBy('order_no');
|
||||
}
|
||||
|
||||
/**
|
||||
* 섹션의 BOM 항목 목록
|
||||
*/
|
||||
public function bomItems()
|
||||
{
|
||||
return $this->hasMany(ItemBomItem::class, 'section_id');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user