mirror of
https://github.com/barryvdh/laravel-ide-helper.git
synced 2026-08-17 17:47:13 +00:00
This commit is contained in:
@@ -753,9 +753,14 @@ class ModelsCommand extends Command
|
||||
get_class($relationObj->getRelated())
|
||||
);
|
||||
|
||||
$relationReturnType = $this->getRelationReturnTypes()[$relation] ?? false;
|
||||
|
||||
if (
|
||||
strpos(get_class($relationObj), 'Many') !== false ||
|
||||
($this->getRelationReturnTypes()[$relation] ?? '') === 'many'
|
||||
$relationReturnType === 'many' ||
|
||||
(
|
||||
!$relationReturnType &&
|
||||
strpos(get_class($relationObj), 'Many') !== false
|
||||
)
|
||||
) {
|
||||
//Collection or array of models (because Collection is Arrayable)
|
||||
$relatedClass = '\\' . get_class($relationObj->getRelated());
|
||||
@@ -782,8 +787,11 @@ class ModelsCommand extends Command
|
||||
);
|
||||
}
|
||||
} elseif (
|
||||
$relation === 'morphTo' ||
|
||||
($this->getRelationReturnTypes()[$relation] ?? '') === 'morphTo'
|
||||
$relationReturnType === 'morphTo' ||
|
||||
(
|
||||
!$relationReturnType &&
|
||||
$relation === 'morphTo'
|
||||
)
|
||||
) {
|
||||
// Model isn't specified because relation is polymorphic
|
||||
$this->setProperty(
|
||||
|
||||
@@ -107,4 +107,9 @@ class Simple extends Model
|
||||
{
|
||||
return $this->testToAnyMorphedRelation(Simple::class);
|
||||
}
|
||||
|
||||
public function relationSampleToBadlyNamedNotManyRelation()
|
||||
{
|
||||
return $this->testToBadlyNamedNotManyRelation(Simple::class);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ use Barryvdh\LaravelIdeHelper\Console\ModelsCommand;
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\AbstractModelsCommand;
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Types\SampleToAnyMorphedRelationType;
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Types\SampleToAnyRelationType;
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Types\SampleToBadlyNamedNotManyRelationType;
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Types\SampleToManyRelationType;
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Types\SampleToOneRelationType;
|
||||
use Illuminate\Support\Facades\Config;
|
||||
@@ -23,11 +24,13 @@ class Test extends AbstractModelsCommand
|
||||
'testToManyRelation' => SampleToManyRelationType::class,
|
||||
'testToAnyRelation' => SampleToAnyRelationType::class,
|
||||
'testToAnyMorphedRelation' => SampleToAnyMorphedRelationType::class,
|
||||
'testToBadlyNamedNotManyRelation' => SampleToBadlyNamedNotManyRelationType::class,
|
||||
]);
|
||||
|
||||
Config::set('ide-helper.additional_relation_return_types', [
|
||||
'testToAnyRelation' => 'many',
|
||||
'testToAnyMorphedRelation' => 'morphTo',
|
||||
'testToBadlyNamedNotManyRelation' => 'one',
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@ namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Traits
|
||||
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Types\SampleToAnyMorphedRelationType;
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Types\SampleToAnyRelationType;
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Types\SampleToBadlyNamedNotManyRelationType;
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Types\SampleToManyRelationType;
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Types\SampleToOneRelationType;
|
||||
|
||||
@@ -34,4 +35,10 @@ trait HasTestRelations
|
||||
$instance = $this->newRelatedInstance($related);
|
||||
return new SampleToAnyMorphedRelationType($instance->newQuery(), $this);
|
||||
}
|
||||
|
||||
public function testToBadlyNamedNotManyRelation($related)
|
||||
{
|
||||
$instance = $this->newRelatedInstance($related);
|
||||
return new SampleToBadlyNamedNotManyRelationType($instance->newQuery(), $this);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Types;
|
||||
|
||||
use Illuminate\Database\Eloquent\Collection;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Relations\Concerns\SupportsDefaultModels;
|
||||
use Illuminate\Database\Eloquent\Relations\Relation;
|
||||
|
||||
/**
|
||||
* Sample for custom relation
|
||||
*
|
||||
* the relation is a big fake and only for testing of the docblock generation
|
||||
*
|
||||
* @package Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations
|
||||
*/
|
||||
class SampleToBadlyNamedNotManyRelationType extends Relation
|
||||
{
|
||||
use SupportsDefaultModels;
|
||||
|
||||
public function addConstraints()
|
||||
{
|
||||
// Fake
|
||||
}
|
||||
|
||||
public function addEagerConstraints(array $models)
|
||||
{
|
||||
// Fake
|
||||
}
|
||||
|
||||
public function initRelation(array $models, $relation)
|
||||
{
|
||||
// Fake
|
||||
}
|
||||
|
||||
public function match(array $models, Collection $results, $relation)
|
||||
{
|
||||
// Fake
|
||||
}
|
||||
|
||||
public function getResults()
|
||||
{
|
||||
// Fake
|
||||
}
|
||||
|
||||
protected function newRelatedInstanceFor(Model $parent)
|
||||
{
|
||||
// Fake
|
||||
}
|
||||
}
|
||||
@@ -159,6 +159,7 @@ use Illuminate\Database\Eloquent\Relations\MorphToMany;
|
||||
* @property-read Model|\Eloquent $relationSampleToAnyMorphedRelationType
|
||||
* @property-read \Illuminate\Database\Eloquent\Collection<int, Simple> $relationSampleToAnyRelationType
|
||||
* @property-read int|null $relation_sample_to_any_relation_type_count
|
||||
* @property-read Simple $relationSampleToBadlyNamedNotManyRelation
|
||||
* @property-read Simple $relationSampleToManyRelationType
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Simple newModelQuery()
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Simple newQuery()
|
||||
@@ -257,4 +258,9 @@ class Simple extends Model
|
||||
{
|
||||
return $this->testToAnyMorphedRelation(Simple::class);
|
||||
}
|
||||
|
||||
public function relationSampleToBadlyNamedNotManyRelation()
|
||||
{
|
||||
return $this->testToBadlyNamedNotManyRelation(Simple::class);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user