id = self::NextId(); if (! $model->site_id) $model->site_id = config('site')->site_id; }); static::saved(function($model) { if ($model->wasRecentlyCreated) { if (! defined(get_class($model).'::RECORD_ID')) throw new \Exception('Missing record_id const for '.get_class($model)); try { $mo = Module::where('name',$model::RECORD_ID) ->where('site_id',$model->site_id)->firstOrFail(); } catch (ModelNotFoundException $e) { Log::critical(sprintf('Module [%s] not recorded, we\'ll create it.',$model::RECORD_ID),['model'=>$model->getAttributes()]); $mo = new Module; $mo->name = $model::RECORD_ID; $mo->site_id = $model->site_id ?: config('site')->site_id; $mo->save(); } if (! $mo->record) { $mo->record = new Record; $mo->record->module_id = $mo->id; $mo->record->site_id = $model->site_id ?: config('site')->site_id; } $mo->record->id = $model->id; $mo->record->save(); } }); } public static function NextId() { return (new self)->max('id')+1; } }