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())
|
get_class($relationObj->getRelated())
|
||||||
);
|
);
|
||||||
|
|
||||||
|
$relationReturnType = $this->getRelationReturnTypes()[$relation] ?? false;
|
||||||
|
|
||||||
if (
|
if (
|
||||||
strpos(get_class($relationObj), 'Many') !== false ||
|
$relationReturnType === 'many' ||
|
||||||
($this->getRelationReturnTypes()[$relation] ?? '') === 'many'
|
(
|
||||||
|
!$relationReturnType &&
|
||||||
|
strpos(get_class($relationObj), 'Many') !== 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());
|
||||||
@@ -782,8 +787,11 @@ class ModelsCommand extends Command
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
} elseif (
|
} elseif (
|
||||||
$relation === 'morphTo' ||
|
$relationReturnType === 'morphTo' ||
|
||||||
($this->getRelationReturnTypes()[$relation] ?? '') === 'morphTo'
|
(
|
||||||
|
!$relationReturnType &&
|
||||||
|
$relation === 'morphTo'
|
||||||
|
)
|
||||||
) {
|
) {
|
||||||
// Model isn't specified because relation is polymorphic
|
// Model isn't specified because relation is polymorphic
|
||||||
$this->setProperty(
|
$this->setProperty(
|
||||||
|
|||||||
@@ -107,4 +107,9 @@ class Simple extends Model
|
|||||||
{
|
{
|
||||||
return $this->testToAnyMorphedRelation(Simple::class);
|
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\AbstractModelsCommand;
|
||||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Types\SampleToAnyMorphedRelationType;
|
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\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\SampleToManyRelationType;
|
||||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Types\SampleToOneRelationType;
|
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Types\SampleToOneRelationType;
|
||||||
use Illuminate\Support\Facades\Config;
|
use Illuminate\Support\Facades\Config;
|
||||||
@@ -23,11 +24,13 @@ class Test extends AbstractModelsCommand
|
|||||||
'testToManyRelation' => SampleToManyRelationType::class,
|
'testToManyRelation' => SampleToManyRelationType::class,
|
||||||
'testToAnyRelation' => SampleToAnyRelationType::class,
|
'testToAnyRelation' => SampleToAnyRelationType::class,
|
||||||
'testToAnyMorphedRelation' => SampleToAnyMorphedRelationType::class,
|
'testToAnyMorphedRelation' => SampleToAnyMorphedRelationType::class,
|
||||||
|
'testToBadlyNamedNotManyRelation' => SampleToBadlyNamedNotManyRelationType::class,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
Config::set('ide-helper.additional_relation_return_types', [
|
Config::set('ide-helper.additional_relation_return_types', [
|
||||||
'testToAnyRelation' => 'many',
|
'testToAnyRelation' => 'many',
|
||||||
'testToAnyMorphedRelation' => 'morphTo',
|
'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\SampleToAnyMorphedRelationType;
|
||||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Types\SampleToAnyRelationType;
|
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\SampleToManyRelationType;
|
||||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Types\SampleToOneRelationType;
|
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Types\SampleToOneRelationType;
|
||||||
|
|
||||||
@@ -34,4 +35,10 @@ trait HasTestRelations
|
|||||||
$instance = $this->newRelatedInstance($related);
|
$instance = $this->newRelatedInstance($related);
|
||||||
return new SampleToAnyMorphedRelationType($instance->newQuery(), $this);
|
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 Model|\Eloquent $relationSampleToAnyMorphedRelationType
|
||||||
* @property-read \Illuminate\Database\Eloquent\Collection<int, Simple> $relationSampleToAnyRelationType
|
* @property-read \Illuminate\Database\Eloquent\Collection<int, Simple> $relationSampleToAnyRelationType
|
||||||
* @property-read int|null $relation_sample_to_any_relation_type_count
|
* @property-read int|null $relation_sample_to_any_relation_type_count
|
||||||
|
* @property-read Simple $relationSampleToBadlyNamedNotManyRelation
|
||||||
* @property-read Simple $relationSampleToManyRelationType
|
* @property-read Simple $relationSampleToManyRelationType
|
||||||
* @method static \Illuminate\Database\Eloquent\Builder|Simple newModelQuery()
|
* @method static \Illuminate\Database\Eloquent\Builder|Simple newModelQuery()
|
||||||
* @method static \Illuminate\Database\Eloquent\Builder|Simple newQuery()
|
* @method static \Illuminate\Database\Eloquent\Builder|Simple newQuery()
|
||||||
@@ -257,4 +258,9 @@ class Simple extends Model
|
|||||||
{
|
{
|
||||||
return $this->testToAnyMorphedRelation(Simple::class);
|
return $this->testToAnyMorphedRelation(Simple::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function relationSampleToBadlyNamedNotManyRelation()
|
||||||
|
{
|
||||||
|
return $this->testToBadlyNamedNotManyRelation(Simple::class);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user