mirror of
https://github.com/barryvdh/laravel-ide-helper.git
synced 2026-08-17 17:47: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
|
||||
|
||||
### 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
|
||||
------------------
|
||||
|
||||
@@ -34,8 +34,10 @@ use Illuminate\Database\Eloquent\Relations\HasOne;
|
||||
use Illuminate\Database\Eloquent\Relations\HasOneThrough;
|
||||
use Illuminate\Database\Eloquent\Relations\MorphMany;
|
||||
use Illuminate\Database\Eloquent\Relations\MorphOne;
|
||||
use Illuminate\Database\Eloquent\Relations\MorphPivot;
|
||||
use Illuminate\Database\Eloquent\Relations\MorphTo;
|
||||
use Illuminate\Database\Eloquent\Relations\MorphToMany;
|
||||
use Illuminate\Database\Eloquent\Relations\Pivot;
|
||||
use Illuminate\Database\Eloquent\Relations\Relation;
|
||||
use Illuminate\Database\Schema\Builder;
|
||||
use Illuminate\Filesystem\Filesystem;
|
||||
@@ -708,6 +710,17 @@ class ModelsCommand extends Command
|
||||
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)
|
||||
$relatedClass = '\\' . get_class($relationObj->getRelated());
|
||||
$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