environment('local')) { // 콘솔/큐 등 non-HTTP 컨텍스트 보호 if (function_exists('request') && request() && request()->is('api/*')) { DB::enableQueryLog(); } } } /** * Bootstrap any application services. */ public function boot(): void { // Morph Map: 다형성 관계 모델 등록 (enforceMorphMap 사용 시 필수) Relation::enforceMorphMap([ 'user' => User::class, 'post' => Post::class, ]); // DB::enableQueryLog(); Builder::macro('debug', function ($debug = null) { if (is_null($debug) && app()->environment('local')) { $debug = true; } if ($debug) { \DB::enableQueryLog(); } return $this; }); // 메뉴 생성/수정/삭제 ↔ 권한 자동 동기화 Menu::observe(MenuObserver::class); // 테넌트 생성 시 자동 실행 Tenant::observe(TenantObserver::class); // CEO 대시보드 오늘의 이슈 실시간 저장 Order::observe(OrderIssueObserver::class); BadDebt::observe(BadDebtIssueObserver::class); Stock::observe(StockIssueObserver::class); ExpectedExpense::observe(ExpectedExpenseIssueObserver::class); ApprovalStep::observe(ApprovalStepIssueObserver::class); Client::observe(ClientIssueObserver::class); Deposit::observe(DepositIssueObserver::class); Withdrawal::observe(WithdrawalIssueObserver::class); } }