diff --git a/src/Fakes/FakeModelsCommandLogic.php b/src/Fakes/FakeModelsCommandLogic.php index 6674d796..66c22d5d 100644 --- a/src/Fakes/FakeModelsCommandLogic.php +++ b/src/Fakes/FakeModelsCommandLogic.php @@ -8,17 +8,33 @@ use function config; use function get_class; use function in_array; +use function is_string; use function implode; +use function is_a; +use function array_merge; trait FakeModelsCommandLogic { - /** @var array */ + /** @var list> */ private $model_classes = []; /** @return array */ public function getModels(): array { - return $this->model_classes + $this->loadModels(); + if ($this->dirs === []) { + throw new \LogicException('Directories to scan models are not set.'); + } + + $models = []; + + // Bypass an issue https://github.com/barryvdh/laravel-ide-helper/issues/1414 + foreach ($this->loadModels() as $probably_model_fqcn) { + if (is_string($probably_model_fqcn) && is_a($probably_model_fqcn, Model::class, true)) { + $models[] = $probably_model_fqcn; + } + } + + return array_merge($this->model_classes, $models); } /**