mirror of
https://github.com/barryvdh/laravel-ide-helper.git
synced 2026-08-18 01:57:13 +00:00
Implement new config to specify return type of custom relations (#1300)
* Implement new config to specify return type of custom relations * Apply suggestions from code review Co-authored-by: Markus Podar <[email protected]> * add test for morphed * fix test output * add info about how to add custom relationships * fix wording Co-authored-by: Markus Podar <[email protected]>
This commit is contained in:
@@ -702,7 +702,10 @@ class ModelsCommand extends Command
|
||||
get_class($relationObj->getRelated())
|
||||
);
|
||||
|
||||
if (strpos(get_class($relationObj), 'Many') !== false) {
|
||||
if (
|
||||
strpos(get_class($relationObj), 'Many') !== false ||
|
||||
($this->getRelationReturnTypes()[$relation] ?? '') === 'many'
|
||||
) {
|
||||
//Collection or array of models (because Collection is Arrayable)
|
||||
$relatedClass = '\\' . get_class($relationObj->getRelated());
|
||||
$collectionClass = $this->getCollectionClass($relatedClass);
|
||||
@@ -726,7 +729,10 @@ class ModelsCommand extends Command
|
||||
// What kind of comments should be added to the relation count here?
|
||||
);
|
||||
}
|
||||
} elseif ($relation === 'morphTo') {
|
||||
} elseif (
|
||||
$relation === 'morphTo' ||
|
||||
($this->getRelationReturnTypes()[$relation] ?? '') === 'morphTo'
|
||||
) {
|
||||
// Model isn't specified because relation is polymorphic
|
||||
$this->setProperty(
|
||||
$method,
|
||||
@@ -1074,6 +1080,14 @@ class ModelsCommand extends Command
|
||||
return array_merge(self::RELATION_TYPES, $configuredRelations);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the return types of relations
|
||||
*/
|
||||
protected function getRelationReturnTypes(): array
|
||||
{
|
||||
return $this->laravel['config']->get('ide-helper.additional_relation_return_types', []);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user