Files
sam-api/app/Console/Commands/MakeModelWithRelationships.php
hskwon cc206fdbed style: Laravel Pint 코드 포맷팅 적용
- PSR-12 스타일 가이드 준수
- 302개 파일 스타일 이슈 자동 수정
- 코드 로직 변경 없음 (포맷팅만)
2025-11-06 17:45:49 +09:00

85 lines
2.3 KiB
PHP

<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Artisan;
use Illuminate\Support\Facades\File;
class MakeModelWithRelationships extends Command
{
protected $signature = 'make:model-with-docs {name} {--migration} {--controller} {--resource}';
protected $description = '모델 생성 후 자동으로 관계 문서 업데이트';
public function handle()
{
$modelName = $this->argument('name');
// 기본 모델 생성
$options = [];
if ($this->option('migration')) {
$options['--migration'] = true;
}
if ($this->option('controller')) {
$options['--controller'] = true;
}
if ($this->option('resource')) {
$options['--resource'] = true;
}
Artisan::call('make:model', array_merge(['name' => $modelName], $options));
$this->info("✅ 모델 생성 완료: {$modelName}");
// 관계 템플릿 추가
$this->addRelationshipTemplate($modelName);
// 논리적 관계 문서 업데이트
Artisan::call('db:update-relationships');
$this->info('✅ 논리적 관계 문서 업데이트 완료');
}
private function addRelationshipTemplate(string $modelName): void
{
$modelPath = app_path("Models/{$modelName}.php");
if (! File::exists($modelPath)) {
$this->error("모델 파일을 찾을 수 없습니다: {$modelPath}");
return;
}
$content = File::get($modelPath);
// 관계 메서드 템플릿 추가
$template = "
// ========================================
// 관계 메서드 (Relationships)
// ========================================
//
// 예시:
// public function category()
// {
// return \$this->belongsTo(Category::class);
// }
//
// public function items()
// {
// return \$this->hasMany(Item::class);
// }
//
// ⚠️ 새 관계 추가 후 'php artisan db:update-relationships' 실행
";
// 클래스 끝 부분에 템플릿 삽입
$content = str_replace(
'}'.PHP_EOL,
$template.PHP_EOL.'}'.PHP_EOL,
$content
);
File::put($modelPath, $content);
$this->info("📝 관계 템플릿 추가: {$modelName}");
}
}