public function removeModel($className) { if (!$this->hasModel($className)) { throw new Exceptions\ModelNotInConfigException(); } unset($this->configData['models'][ElegantModel::generateId($className)]); }
protected function getForForm() { if ($this->field->getRelation()->getType() !== 'belongsTo') { return ''; } $relatedModels = app(EloquentModelsRepositoryInterface::class, [ElegantModel::normalizeClassName($this->field->getRelation()->getRelatedModel())]); return Form::elegantSelect($this->field->getRelation()->getForeignKey(), $this->field->getDisplayName(), View::getShared()['errors'], $relatedModels->elegantLists()); }
public function __construct($modelName) { $modelId = ElegantModel::generateId($modelName); if (!($model = Config::getModelById($modelId))) { throw new \Exception('Model not found with name ' . $modelName); } $this->elegantModel = $model; parent::__construct($this->elegantModel->getModelInstance()); }
protected function registerEloquentEvents() { // Flush Elegant cache when anything changes for models registered by Elegant Event::listen('eloquent.*', function ($caller) { $callerClass = get_class($caller); if (!in_array($callerClass, ElegantConfig::getModelsAsClassNames())) { return; } if (in_array(Event::firing(), ['eloquent.saved', 'eloquent.deleted', 'eloquent.updated', 'eloquent.created']) && $this->cacheIsTaggable()) { Cache::tags('elegant-' . Support\ElegantModel::normalizeClassName($callerClass))->flush(); } }); }
/** * Checks if a certain class should be considered * a application-level Eloquent model and if so, * stores the class name as a found model. */ protected function checkClass($className) { if (is_a($className, self::CLASS_MATCHING_NAME, true) && $className !== self::CLASS_MATCHING_NAME && strpos((new ReflectionClass($className))->getFileName(), $this->path) === 0) { $this->foundModels[ElegantModel::generateId($className)] = $className; } }
public function __construct(EloquentModelsRepositoryInterface $eloquentModels) { parent::__construct(); $this->entityName = 'elegant-' . ElegantModel::normalizeClassName($eloquentModels->model()); $this->repository = $eloquentModels; }
public function it_should_return_model_by_id() { $this->addModel(new TestModels\Article(), []); $this->getModelById(ElegantModel::generateId(TestModels\Article::class))->shouldReturnAnInstanceOf(ElegantModel::class); }
public function it_should_find_existing_models() { $this->findModels()->shouldReturn([ElegantModel::generateId(TestModels\Article::class) => TestModels\Article::class, ElegantModel::generateId(TestModels\Comment::class) => TestModels\Comment::class, ElegantModel::generateId(TestModels\User::class) => TestModels\User::class]); }
protected function addNewModels(array $newModels) { foreach (array_unique($newModels) as $model) { $this->info("Adding new model {$model}..."); $this->config->addModel(new $model()); $this->navigation->addItem(['class_name' => $model, 'slug' => ElegantModel::normalizeClassName($model)]); } }