mirror of
https://github.com/barryvdh/laravel-ide-helper.git
synced 2026-08-18 01:57:13 +00:00
Add pivot class property (#1518)
* Add pivot class property * Add test for pivot class properties * Fix failed test for pivot class properties * Update CHANGELOG.md * Fix failed test
This commit is contained in:
@@ -10,6 +10,7 @@ All notable changes to this project will be documented in this file.
|
|||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
- Add type to pivot when using a custom pivot class [#1518 / d3v2a](https://github.com/barryvdh/laravel-ide-helper/pull/1518)
|
||||||
|
|
||||||
2024-03-01, 3.0.0
|
2024-03-01, 3.0.0
|
||||||
------------------
|
------------------
|
||||||
|
|||||||
@@ -34,8 +34,10 @@ use Illuminate\Database\Eloquent\Relations\HasOne;
|
|||||||
use Illuminate\Database\Eloquent\Relations\HasOneThrough;
|
use Illuminate\Database\Eloquent\Relations\HasOneThrough;
|
||||||
use Illuminate\Database\Eloquent\Relations\MorphMany;
|
use Illuminate\Database\Eloquent\Relations\MorphMany;
|
||||||
use Illuminate\Database\Eloquent\Relations\MorphOne;
|
use Illuminate\Database\Eloquent\Relations\MorphOne;
|
||||||
|
use Illuminate\Database\Eloquent\Relations\MorphPivot;
|
||||||
use Illuminate\Database\Eloquent\Relations\MorphTo;
|
use Illuminate\Database\Eloquent\Relations\MorphTo;
|
||||||
use Illuminate\Database\Eloquent\Relations\MorphToMany;
|
use Illuminate\Database\Eloquent\Relations\MorphToMany;
|
||||||
|
use Illuminate\Database\Eloquent\Relations\Pivot;
|
||||||
use Illuminate\Database\Eloquent\Relations\Relation;
|
use Illuminate\Database\Eloquent\Relations\Relation;
|
||||||
use Illuminate\Database\Schema\Builder;
|
use Illuminate\Database\Schema\Builder;
|
||||||
use Illuminate\Filesystem\Filesystem;
|
use Illuminate\Filesystem\Filesystem;
|
||||||
@@ -708,6 +710,17 @@ class ModelsCommand extends Command
|
|||||||
strpos(get_class($relationObj), 'Many') !== false
|
strpos(get_class($relationObj), 'Many') !== false
|
||||||
)
|
)
|
||||||
) {
|
) {
|
||||||
|
if ($relationObj instanceof BelongsToMany) {
|
||||||
|
$pivot = get_class($relationObj->newPivot());
|
||||||
|
if (!in_array($pivot,[ Pivot::class, MorphPivot::class])) {
|
||||||
|
$this->setProperty(
|
||||||
|
$relationObj->getPivotAccessor(),
|
||||||
|
$this->getClassNameInDestinationFile($model,$pivot),
|
||||||
|
true,
|
||||||
|
false
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
//Collection or array of models (because Collection is Arrayable)
|
//Collection or array of models (because Collection is Arrayable)
|
||||||
$relatedClass = '\\' . get_class($relationObj->getRelated());
|
$relatedClass = '\\' . get_class($relationObj->getRelated());
|
||||||
$collectionClass = $this->getCollectionClass($relatedClass);
|
$collectionClass = $this->getCollectionClass($relatedClass);
|
||||||
|
|||||||
@@ -0,0 +1,16 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Pivot\Models;
|
||||||
|
|
||||||
|
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Pivot\Models\Pivots\CustomPivot;
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
class ModelWithPivot extends Model
|
||||||
|
{
|
||||||
|
public function relationWithCustomPivot()
|
||||||
|
{
|
||||||
|
return $this->belongsToMany(ModelwithPivot::class)
|
||||||
|
->using(CustomPivot::class)
|
||||||
|
->as('customAccessor');
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Pivot\Models\Pivots;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Relations\Pivot;
|
||||||
|
|
||||||
|
class CustomPivot extends Pivot
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Pivot;
|
||||||
|
|
||||||
|
use Barryvdh\LaravelIdeHelper\Console\ModelsCommand;
|
||||||
|
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\AbstractModelsCommand;
|
||||||
|
|
||||||
|
class Test extends AbstractModelsCommand
|
||||||
|
{
|
||||||
|
public function test(): void
|
||||||
|
{
|
||||||
|
$command = $this->app->make(ModelsCommand::class);
|
||||||
|
|
||||||
|
$tester = $this->runCommand($command, [
|
||||||
|
'--write' => true,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$this->assertSame(0, $tester->getStatusCode());
|
||||||
|
$this->assertStringContainsString('Written new phpDocBlock to', $tester->getDisplay());
|
||||||
|
$this->assertMatchesMockedSnapshot();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Pivot\Models;
|
||||||
|
|
||||||
|
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Pivot\Models\Pivots\CustomPivot;
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @property-read CustomPivot $customAccessor
|
||||||
|
* @property-read \Illuminate\Database\Eloquent\Collection<int, ModelWithPivot> $relationWithCustomPivot
|
||||||
|
* @property-read int|null $relation_with_custom_pivot_count
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|ModelWithPivot newModelQuery()
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|ModelWithPivot newQuery()
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|ModelWithPivot query()
|
||||||
|
* @mixin \Eloquent
|
||||||
|
*/
|
||||||
|
class ModelWithPivot extends Model
|
||||||
|
{
|
||||||
|
public function relationWithCustomPivot()
|
||||||
|
{
|
||||||
|
return $this->belongsToMany(ModelwithPivot::class)
|
||||||
|
->using(CustomPivot::class)
|
||||||
|
->as('customAccessor');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Pivot\Models\Pivots;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Relations\Pivot;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|CustomPivot newModelQuery()
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|CustomPivot newQuery()
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|CustomPivot query()
|
||||||
|
* @mixin \Eloquent
|
||||||
|
*/
|
||||||
|
class CustomPivot extends Pivot
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user