getBindings(), function($sql, $binding){ return preg_replace('/\?/', is_numeric($binding) ? $binding : "'".$binding."'" , $sql, 1); }, $this->toSql()); }); \Illuminate\Database\Eloquent\Builder::macro('rawSql', function(){ return ($this->getQuery()->rawSql()); }); $this->configureRateLimiting(); $this->registerEvents(); $this->registerObservers(); } /** * api 组限流(原 RouteServiceProvider::configureRateLimiting) */ protected function configureRateLimiting() { RateLimiter::for('api', function (Request $request) { return Limit::perMinute(60)->by(optional($request->user())->id ?: $request->ip()); }); } /** * 事件监听(原 EventServiceProvider::$listen) */ protected function registerEvents() { Event::listen(Registered::class, SendEmailVerificationNotification::class); } /** * 模型观察者(原 EventServiceProvider::boot) */ protected function registerObservers() { File::observe(FileObserver::class); FileUser::observe(FileUserObserver::class); Project::observe(ProjectObserver::class); ProjectTask::observe(ProjectTaskObserver::class); ProjectTaskContent::observe(ProjectTaskContentObserver::class); ProjectTaskUser::observe(ProjectTaskUserObserver::class); ProjectTaskVisibilityUser::observe(ProjectTaskVisibilityUserObserver::class); ProjectUser::observe(ProjectUserObserver::class); User::observe(UserObserver::class); UserTag::observe(UserTagObserver::class); UserTagRecognition::observe(UserTagRecognitionObserver::class); WebSocketDialog::observe(WebSocketDialogObserver::class); WebSocketDialogMsg::observe(WebSocketDialogMsgObserver::class); WebSocketDialogUser::observe(WebSocketDialogUserObserver::class); } }