Files
sam-manage/database/seeders/TriggerAuditMenuSeeder.php

66 lines
1.9 KiB
PHP
Raw Permalink Normal View History

<?php
namespace Database\Seeders;
use App\Models\Commons\Menu;
use Illuminate\Database\Seeder;
class TriggerAuditMenuSeeder extends Seeder
{
public function run(): void
{
$tenantId = 1;
// 시스템 관리 부모 메뉴 찾기
$parentMenu = Menu::where('tenant_id', $tenantId)
->where('name', '시스템 관리')
->first();
if (! $parentMenu) {
$this->command->error('시스템 관리 메뉴를 찾을 수 없습니다.');
return;
}
// 이미 존재하는지 확인
$existingMenu = Menu::where('tenant_id', $tenantId)
->where('name', 'DB 변경 추적')
->where('parent_id', $parentMenu->id)
->first();
if ($existingMenu) {
$this->command->info('DB 변경 추적 메뉴가 이미 존재합니다.');
return;
}
// 현재 자식 메뉴 최대 sort_order 확인
$maxSort = Menu::where('parent_id', $parentMenu->id)
->max('sort_order') ?? 0;
// 메뉴 생성
$menu = Menu::create([
'tenant_id' => $tenantId,
'parent_id' => $parentMenu->id,
'name' => 'DB 변경 추적',
'url' => '/trigger-audit',
'icon' => 'database',
'sort_order' => $maxSort + 1,
'is_active' => true,
]);
$this->command->info("메뉴 생성 완료: {$menu->name} (sort_order: {$menu->sort_order})");
// 하위 메뉴 목록 출력
$this->command->info('');
$this->command->info('=== 시스템 관리 하위 메뉴 ===');
$children = Menu::where('parent_id', $parentMenu->id)
->orderBy('sort_order')
->get(['name', 'url', 'sort_order']);
foreach ($children as $child) {
$this->command->info("{$child->sort_order}. {$child->name} ({$child->url})");
}
}
}