diff --git a/src/Generators/ModelGenerator.php b/src/Generators/ModelGenerator.php index 12beb688..01925e33 100644 --- a/src/Generators/ModelGenerator.php +++ b/src/Generators/ModelGenerator.php @@ -91,8 +91,30 @@ protected function buildClassPhpDoc(Model $model) $phpDoc .= PHP_EOL; /** @var Column $column */ foreach ($model->columns() as $column) { - $phpDoc .= sprintf(' * @property %s $%s', $this->phpDataType($column->dataType()), $column->name()); - $phpDoc .= PHP_EOL; + if ($column->dataType() === 'morphs') { + $phpDoc .= ' * @property int $'. $column->name() . '_id'; + $phpDoc .= PHP_EOL; + $phpDoc .= ' * @property string $'. $column->name() . '_type'; + $phpDoc .= PHP_EOL; + } elseif ($column->dataType() === 'nullableMorphs') { + $phpDoc .= ' * @property int|null $'. $column->name() . '_id'; + $phpDoc .= PHP_EOL; + $phpDoc .= ' * @property string|null $'. $column->name() . '_type'; + $phpDoc .= PHP_EOL; + } elseif ($column->dataType() === 'uuidMorphs') { + $phpDoc .= ' * @property string $'. $column->name() . '_id'; + $phpDoc .= PHP_EOL; + $phpDoc .= ' * @property string $'. $column->name() . '_type'; + $phpDoc .= PHP_EOL; + } elseif ($column->dataType() === 'nullableUuidMorphs') { + $phpDoc .= ' * @property string|null $'. $column->name() . '_id'; + $phpDoc .= PHP_EOL; + $phpDoc .= ' * @property string|null $'. $column->name() . '_type'; + $phpDoc .= PHP_EOL; + } else { + $phpDoc .= sprintf(' * @property %s $%s', $this->phpDataType($column->dataType()), $column->name()); + $phpDoc .= PHP_EOL; + } } if ($model->usesSoftDeletes()) { diff --git a/tests/Feature/Generators/ModelGeneratorTest.php b/tests/Feature/Generators/ModelGeneratorTest.php index 6c64a12f..04107bda 100644 --- a/tests/Feature/Generators/ModelGeneratorTest.php +++ b/tests/Feature/Generators/ModelGeneratorTest.php @@ -676,6 +676,7 @@ public function docBlockModelsDataProvider() ['drafts/relationships.yaml', 'app/Comment.php', 'models/relationships-phpdoc.php'], ['drafts/disable-auto-columns.yaml', 'app/State.php', 'models/disable-auto-columns-phpdoc.php'], ['drafts/foreign-key-shorthand.yaml', 'app/Comment.php', 'models/foreign-key-shorthand-phpdoc.php'], + ['drafts/optimize.yaml', 'app/Optimize.php', 'models/optimize.php'], ]; } diff --git a/tests/fixtures/drafts/optimize.yaml b/tests/fixtures/drafts/optimize.yaml index 9c83cb09..3bd6e05e 100644 --- a/tests/fixtures/drafts/optimize.yaml +++ b/tests/fixtures/drafts/optimize.yaml @@ -6,6 +6,9 @@ models: int: integer unsigned dec: decimal:8,2 unsigned big: bigInteger unsigned - foo: morphs nullable - foobar: uuidMorphs nullable - timestamps: false + foo: morphs + bar: uuidMorphs nullable + baz: nullableMorphs + foobar: uuidMorphs + foobarbaz: nullableUuidMorphs + timestamps: true \ No newline at end of file diff --git a/tests/fixtures/migrations/optimize.php b/tests/fixtures/migrations/optimize.php index 43864c55..80f1c98f 100644 --- a/tests/fixtures/migrations/optimize.php +++ b/tests/fixtures/migrations/optimize.php @@ -21,8 +21,12 @@ public function up() $table->unsignedInteger('int'); $table->unsignedDecimal('dec', 8, 2); $table->unsignedBigInteger('big'); - $table->nullableMorphs('foo'); - $table->nullableUuidMorphs('foobar'); + $table->morphs('foo'); + $table->nullableUuidMorphs('bar'); + $table->nullableMorphs('baz'); + $table->uuidMorphs('foobar'); + $table->nullableUuidMorphs('foobarbaz'); + $table->timestamps(); }); } diff --git a/tests/fixtures/models/optimize.php b/tests/fixtures/models/optimize.php new file mode 100644 index 00000000..a7844d83 --- /dev/null +++ b/tests/fixtures/models/optimize.php @@ -0,0 +1,62 @@ + 'integer', + 'tiny' => 'integer', + 'small' => 'integer', + 'medium' => 'integer', + 'dec' => 'decimal:2', + 'big' => 'integer', + ]; +}