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());
 }
 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();
         }
     });
 }
 public function __construct(EloquentModelsRepositoryInterface $eloquentModels)
 {
     parent::__construct();
     $this->entityName = 'elegant-' . ElegantModel::normalizeClassName($eloquentModels->model());
     $this->repository = $eloquentModels;
 }
 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)]);
     }
 }