Check for traits recursively (#1216)

* Check for traits recursively

* Remove autoload bool from class_uses_recursive

* Add test

* Update src/Console/ModelsCommand.php

Co-authored-by: Markus Podar <[email protected]>

* Updated changelog

Co-authored-by: Markus Podar <[email protected]>
This commit is contained in:
Daniël de Wit
2021-06-20 10:18:14 +02:00
committed by GitHub
co-authored by Markus Podar
parent df670747c3
commit e71f3d5fc0
6 changed files with 63 additions and 3 deletions
+3 -2
View File
@@ -1082,7 +1082,7 @@ class ModelsCommand extends Command
*/
protected function getSoftDeleteMethods($model)
{
$traits = class_uses(get_class($model), true);
$traits = class_uses_recursive($model);
if (in_array('Illuminate\\Database\\Eloquent\\SoftDeletes', $traits)) {
$modelName = $this->getClassNameInDestinationFile($model, get_class($model));
$builder = $this->getClassNameInDestinationFile($model, \Illuminate\Database\Query\Builder::class);
@@ -1105,7 +1105,8 @@ class ModelsCommand extends Command
$modelName = get_class($model);
$traits = class_uses($modelName, true);
$traits = class_uses_recursive($modelName);
if (!in_array('Illuminate\\Database\\Eloquent\\Factories\\HasFactory', $traits)) {
return;
}
+1 -1
View File
@@ -296,7 +296,7 @@ class Generator
return !$reflection->isInternal() && $reflection->getName() === $class;
})
->filter(function ($class) {
$traits = class_uses($class);
$traits = class_uses_recursive($class);
// Filter only classes with the macroable trait
return isset($traits[Macroable::class]);