Skip to content

Commit c3fa824

Browse files
authored
Add PHPDoc for Model factory (#771)
1 parent b372675 commit c3fa824

File tree

6 files changed

+29
-1
lines changed

6 files changed

+29
-1
lines changed

src/Generators/ModelGenerator.php

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,9 @@
1313

1414
class ModelGenerator extends AbstractClassGenerator implements Generator
1515
{
16-
use HandlesImports, HandlesInterfaces, HandlesTraits;
16+
use HandlesImports, HandlesInterfaces, HandlesTraits {
17+
HandlesTraits::buildTraits as protected buildBaseTraits;
18+
}
1719

1820
protected array $types = ['models'];
1921

@@ -56,6 +58,27 @@ protected function populateStub(string $stub, Model $model): string
5658
return $stub;
5759
}
5860

61+
protected function buildTraits(Model $model): string
62+
{
63+
$traits = $this->buildBaseTraits($model);
64+
65+
if ($traits === '') {
66+
return '';
67+
}
68+
69+
if (!config('blueprint.generate_phpdocs')) {
70+
return $traits;
71+
}
72+
73+
if (!in_array('HasFactory', $this->traits[$model->name()] ?? [], true)) {
74+
return $traits;
75+
}
76+
77+
$factory = '\\Database\\Factories\\' . $model->name() . 'Factory';
78+
79+
return "/** @use HasFactory<{$factory}> */" . PHP_EOL . ' ' . $traits;
80+
}
81+
5982
protected function buildClassPhpDoc(Model $model): string
6083
{
6184
if (!config('blueprint.generate_phpdocs')) {

tests/fixtures/models/disable-auto-columns-phpdoc.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
*/
1313
class State extends Model
1414
{
15+
/** @use HasFactory<\Database\Factories\StateFactory> */
1516
use HasFactory;
1617

1718
/**

tests/fixtures/models/foreign-key-shorthand-phpdoc.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
*/
1717
class Comment extends Model
1818
{
19+
/** @use HasFactory<\Database\Factories\CommentFactory> */
1920
use HasFactory;
2021

2122
/**

tests/fixtures/models/readme-example-phpdoc.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
*/
1818
class Post extends Model
1919
{
20+
/** @use HasFactory<\Database\Factories\PostFactory> */
2021
use HasFactory;
2122

2223
/**

tests/fixtures/models/relationships-phpdoc.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
*/
1616
class Comment extends Model
1717
{
18+
/** @use HasFactory<\Database\Factories\CommentFactory> */
1819
use HasFactory;
1920

2021
/**

tests/fixtures/models/soft-deletes-phpdoc.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
*/
1717
class Comment extends Model
1818
{
19+
/** @use HasFactory<\Database\Factories\CommentFactory> */
1920
use HasFactory, SoftDeletes;
2021

2122
/**

0 commit comments

Comments
 (0)