Skip to content

Commit 843067b

Browse files
authored
Merge pull request #1196 from ahmed-aliraqi/master
Fix ide-helper:models exception if model doesn't have factory
2 parents f0c138c + f0f7051 commit 843067b

File tree

5 files changed

+44
-1
lines changed

5 files changed

+44
-1
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ All notable changes to this project will be documented in this file.
88
- Model hooks for adding custom information from external sources to model classes through the ModelsCommand [\#945 / wimski](https://github.com/barryvdh/laravel-ide-helper/pull/945)
99

1010
### Fixed
11+
- Fix ide-helper:models exception if model doesn't have factory [\#1196 / ahmed-aliraqi](https://github.com/barryvdh/laravel-ide-helper/pull/1196)
1112
- Running tests triggering post_migrate hooks [\#1193 / netpok](https://github.com/barryvdh/laravel-ide-helper/pull/1193)
1213
- Array_merge error when config is cached prior to package install [\#1184 / netpok](https://github.com/barryvdh/laravel-ide-helper/pull/1184)
1314

src/Console/ModelsCommand.php

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1097,7 +1097,14 @@ protected function getFactoryMethods($model)
10971097
}
10981098

10991099
$modelName = get_class($model);
1100-
$factory = get_class($modelName::factory());
1100+
$modelBaseName = class_basename($modelName);
1101+
1102+
$factory = "\Database\Factories\\{$modelBaseName}Factory";
1103+
1104+
if ($modelName::newFactory()) {
1105+
$factory = get_class($modelName::newFactory());
1106+
}
1107+
11011108
$factory = '\\' . trim($factory, '\\');
11021109

11031110
if (!class_exists($factory)) {
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Factories\Models;
6+
7+
use Illuminate\Database\Eloquent\Factories\HasFactory;
8+
use Illuminate\Database\Eloquent\Model;
9+
10+
class ModelWithoutFactory extends Model
11+
{
12+
use HasFactory;
13+
}

tests/Console/ModelsCommand/Factories/Test.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ public function test(): void
2626

2727
$this->assertSame(0, $tester->getStatusCode());
2828
$this->assertStringContainsString('Written new phpDocBlock to', $tester->getDisplay());
29+
$this->assertStringNotContainsString('not found', $tester->getDisplay());
2930
$this->assertMatchesMockedSnapshot();
3031
}
3132
}

tests/Console/ModelsCommand/Factories/__snapshots__/Test__test__1.php

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,27 @@
44

55
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Factories\Models;
66

7+
use Illuminate\Database\Eloquent\Factories\HasFactory;
8+
use Illuminate\Database\Eloquent\Model;
9+
10+
/**
11+
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Factories\Models\ModelWithoutFactory
12+
*
13+
* @method static \Illuminate\Database\Eloquent\Builder|ModelWithoutFactory newModelQuery()
14+
* @method static \Illuminate\Database\Eloquent\Builder|ModelWithoutFactory newQuery()
15+
* @method static \Illuminate\Database\Eloquent\Builder|ModelWithoutFactory query()
16+
* @mixin \Eloquent
17+
*/
18+
class ModelWithoutFactory extends Model
19+
{
20+
use HasFactory;
21+
}
22+
<?php
23+
24+
declare(strict_types=1);
25+
26+
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Factories\Models;
27+
728
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Factories\Factories\SimpleFactory;
829
use Illuminate\Database\Eloquent\Factories\HasFactory;
930
use Illuminate\Database\Eloquent\Model;

0 commit comments

Comments
 (0)