mirror of
https://github.com/barryvdh/laravel-ide-helper.git
synced 2026-08-18 10:07:12 +00:00
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:
co-authored by
Markus Podar
parent
df670747c3
commit
e71f3d5fc0
@@ -4,6 +4,8 @@ All notable changes to this project will be documented in this file.
|
|||||||
|
|
||||||
[Next release](https://github.com/barryvdh/laravel-ide-helper/compare/v2.10.0...master)
|
[Next release](https://github.com/barryvdh/laravel-ide-helper/compare/v2.10.0...master)
|
||||||
--------------
|
--------------
|
||||||
|
### Fixed
|
||||||
|
- Fix recursively searching for `HasFactory` and `Macroable` traits [\#1216 / daniel-de-wit](https://github.com/barryvdh/laravel-ide-helper/pull/1216)
|
||||||
|
|
||||||
2021-04-09, 2.10.0
|
2021-04-09, 2.10.0
|
||||||
------------------
|
------------------
|
||||||
|
|||||||
@@ -1082,7 +1082,7 @@ class ModelsCommand extends Command
|
|||||||
*/
|
*/
|
||||||
protected function getSoftDeleteMethods($model)
|
protected function getSoftDeleteMethods($model)
|
||||||
{
|
{
|
||||||
$traits = class_uses(get_class($model), true);
|
$traits = class_uses_recursive($model);
|
||||||
if (in_array('Illuminate\\Database\\Eloquent\\SoftDeletes', $traits)) {
|
if (in_array('Illuminate\\Database\\Eloquent\\SoftDeletes', $traits)) {
|
||||||
$modelName = $this->getClassNameInDestinationFile($model, get_class($model));
|
$modelName = $this->getClassNameInDestinationFile($model, get_class($model));
|
||||||
$builder = $this->getClassNameInDestinationFile($model, \Illuminate\Database\Query\Builder::class);
|
$builder = $this->getClassNameInDestinationFile($model, \Illuminate\Database\Query\Builder::class);
|
||||||
@@ -1105,7 +1105,8 @@ class ModelsCommand extends Command
|
|||||||
|
|
||||||
$modelName = get_class($model);
|
$modelName = get_class($model);
|
||||||
|
|
||||||
$traits = class_uses($modelName, true);
|
|
||||||
|
$traits = class_uses_recursive($modelName);
|
||||||
if (!in_array('Illuminate\\Database\\Eloquent\\Factories\\HasFactory', $traits)) {
|
if (!in_array('Illuminate\\Database\\Eloquent\\Factories\\HasFactory', $traits)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -296,7 +296,7 @@ class Generator
|
|||||||
return !$reflection->isInternal() && $reflection->getName() === $class;
|
return !$reflection->isInternal() && $reflection->getName() === $class;
|
||||||
})
|
})
|
||||||
->filter(function ($class) {
|
->filter(function ($class) {
|
||||||
$traits = class_uses($class);
|
$traits = class_uses_recursive($class);
|
||||||
|
|
||||||
// Filter only classes with the macroable trait
|
// Filter only classes with the macroable trait
|
||||||
return isset($traits[Macroable::class]);
|
return isset($traits[Macroable::class]);
|
||||||
|
|||||||
@@ -0,0 +1,30 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Factories\Factories;
|
||||||
|
|
||||||
|
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Factories\Models\ModelWithNestedFactory;
|
||||||
|
use Illuminate\Database\Eloquent\Factories\Factory;
|
||||||
|
|
||||||
|
class ModelWithNestedFactoryFactory extends Factory
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* The name of the factory's corresponding model.
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $model = ModelWithNestedFactory::class;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Define the model's default state.
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function definition()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
//
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Factories\Models;
|
||||||
|
|
||||||
|
class ModelWithNestedFactory extends ModelWithFactory
|
||||||
|
{
|
||||||
|
}
|
||||||
@@ -59,6 +59,24 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Factories\Models;
|
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Factories\Models;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Factories\Models\ModelWithNestedFactory
|
||||||
|
*
|
||||||
|
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Factories\Factories\ModelWithNestedFactoryFactory factory(...$parameters)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|ModelWithNestedFactory newModelQuery()
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|ModelWithNestedFactory newQuery()
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|ModelWithNestedFactory query()
|
||||||
|
* @mixin \Eloquent
|
||||||
|
*/
|
||||||
|
class ModelWithNestedFactory extends ModelWithFactory
|
||||||
|
{
|
||||||
|
}
|
||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Factories\Models;
|
||||||
|
|
||||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user