mirror of
https://github.com/barryvdh/laravel-ide-helper.git
synced 2026-08-17 17:47:13 +00:00
Merge branch 'patch-1' of github.com:uno-sw/laravel-ide-helper into uno-sw-patch-1
This commit is contained in:
@@ -20,6 +20,8 @@ Add support for multiple pivot types when using the same accessor.
|
||||
|
||||
### Added
|
||||
|
||||
- Add support for AsCollection::using and AsEnumCollection::of casts [#1577 / uno-sw](https://github.com/barryvdh/laravel-ide-helper/pull/1577)
|
||||
|
||||
2024-07-12, 3.1.0
|
||||
------------------
|
||||
|
||||
|
||||
@@ -410,8 +410,6 @@ class ModelsCommand extends Command
|
||||
case 'immutable_datetime':
|
||||
$realType = '\Carbon\CarbonImmutable';
|
||||
break;
|
||||
case AsCollection::class:
|
||||
case AsEnumCollection::class:
|
||||
case 'collection':
|
||||
$realType = '\Illuminate\Support\Collection';
|
||||
break;
|
||||
@@ -437,6 +435,18 @@ class ModelsCommand extends Command
|
||||
continue;
|
||||
}
|
||||
|
||||
if (Str::startsWith($type, AsCollection::class)) {
|
||||
$realType = $this->getTypeInModel($model, $params[0] ?? null) ?? '\Illuminate\Support\Collection';
|
||||
}
|
||||
|
||||
if (Str::startsWith($type, AsEnumCollection::class)) {
|
||||
$realType = '\Illuminate\Support\Collection';
|
||||
$relatedModel = $this->getTypeInModel($model, $params[0] ?? null);
|
||||
if ($relatedModel) {
|
||||
$realType = $this->getCollectionTypeHint($realType, $relatedModel);
|
||||
}
|
||||
}
|
||||
|
||||
$realType = $this->checkForCastableCasts($realType, $params);
|
||||
$realType = $this->checkForCustomLaravelCasts($realType);
|
||||
$realType = $this->getTypeOverride($realType);
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\AdvancedCasts\Collections;
|
||||
|
||||
use Illuminate\Support\Collection;
|
||||
|
||||
class AdvancedCastCollection extends Collection
|
||||
{
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\AdvancedCasts\Enums;
|
||||
|
||||
enum AdvancedCastEnum
|
||||
{
|
||||
case apple;
|
||||
case banana;
|
||||
case orange;
|
||||
}
|
||||
@@ -4,6 +4,8 @@ declare(strict_types=1);
|
||||
|
||||
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\AdvancedCasts\Models;
|
||||
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\AdvancedCasts\Collections\AdvancedCastCollection;
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\AdvancedCasts\Enums\AdvancedCastEnum;
|
||||
use Illuminate\Database\Eloquent\Casts\AsArrayObject;
|
||||
use Illuminate\Database\Eloquent\Casts\AsCollection;
|
||||
use Illuminate\Database\Eloquent\Casts\AsEnumCollection;
|
||||
@@ -11,21 +13,26 @@ use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class AdvancedCast extends Model
|
||||
{
|
||||
protected $casts = [
|
||||
'cast_to_date_serialization' => 'date:Y-m-d',
|
||||
'cast_to_datetime_serialization' => 'datetime:Y-m-d H:i:s',
|
||||
'cast_to_custom_datetime' => 'custom_datetime:Y-m-d H:i:s',
|
||||
'cast_to_immutable_date' => 'immutable_date',
|
||||
'cast_to_immutable_custom_datetime' => 'immutable_custom_datetime:Y-m-d H:i:s',
|
||||
'cast_to_immutable_datetime' => 'immutable_datetime',
|
||||
'cast_to_timestamp' => 'timestamp',
|
||||
'cast_to_encrypted' => 'encrypted',
|
||||
'cast_to_encrypted_array' => 'encrypted:array',
|
||||
'cast_to_encrypted_collection' => 'encrypted:collection',
|
||||
'cast_to_encrypted_json' => 'encrypted:json',
|
||||
'cast_to_encrypted_object' => 'encrypted:object',
|
||||
'cast_to_as_collection' => AsCollection::class,
|
||||
'cast_to_as_enum_collection' => AsEnumCollection::class,
|
||||
'cast_to_as_array_object' => AsArrayObject::class,
|
||||
];
|
||||
protected function casts(): array
|
||||
{
|
||||
return [
|
||||
'cast_to_date_serialization' => 'date:Y-m-d',
|
||||
'cast_to_datetime_serialization' => 'datetime:Y-m-d H:i:s',
|
||||
'cast_to_custom_datetime' => 'custom_datetime:Y-m-d H:i:s',
|
||||
'cast_to_immutable_date' => 'immutable_date',
|
||||
'cast_to_immutable_custom_datetime' => 'immutable_custom_datetime:Y-m-d H:i:s',
|
||||
'cast_to_immutable_datetime' => 'immutable_datetime',
|
||||
'cast_to_timestamp' => 'timestamp',
|
||||
'cast_to_encrypted' => 'encrypted',
|
||||
'cast_to_encrypted_array' => 'encrypted:array',
|
||||
'cast_to_encrypted_collection' => 'encrypted:collection',
|
||||
'cast_to_encrypted_json' => 'encrypted:json',
|
||||
'cast_to_encrypted_object' => 'encrypted:object',
|
||||
'cast_to_as_collection' => AsCollection::class,
|
||||
'cast_to_as_collection_using' => AsCollection::using(AdvancedCastCollection::class),
|
||||
'cast_to_as_enum_collection' => AsEnumCollection::class,
|
||||
'cast_to_as_enum_collection_of' => AsEnumCollection::of(AdvancedCastEnum::class),
|
||||
'cast_to_as_array_object' => AsArrayObject::class,
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,8 @@ declare(strict_types=1);
|
||||
|
||||
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\AdvancedCasts\Models;
|
||||
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\AdvancedCasts\Collections\AdvancedCastCollection;
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\AdvancedCasts\Enums\AdvancedCastEnum;
|
||||
use Illuminate\Database\Eloquent\Casts\AsArrayObject;
|
||||
use Illuminate\Database\Eloquent\Casts\AsCollection;
|
||||
use Illuminate\Database\Eloquent\Casts\AsEnumCollection;
|
||||
@@ -27,6 +29,8 @@ use Illuminate\Database\Eloquent\Model;
|
||||
* @property \Illuminate\Support\Collection $cast_to_as_collection
|
||||
* @property \Illuminate\Support\Collection $cast_to_as_enum_collection
|
||||
* @property \ArrayObject $cast_to_as_array_object
|
||||
* @property AdvancedCastCollection $cast_to_as_collection_using
|
||||
* @property \Illuminate\Support\Collection<int, AdvancedCastEnum> $cast_to_as_enum_collection_of
|
||||
* @method static \Illuminate\Database\Eloquent\Builder<static>|AdvancedCast newModelQuery()
|
||||
* @method static \Illuminate\Database\Eloquent\Builder<static>|AdvancedCast newQuery()
|
||||
* @method static \Illuminate\Database\Eloquent\Builder<static>|AdvancedCast query()
|
||||
@@ -49,21 +53,26 @@ use Illuminate\Database\Eloquent\Model;
|
||||
*/
|
||||
class AdvancedCast extends Model
|
||||
{
|
||||
protected $casts = [
|
||||
'cast_to_date_serialization' => 'date:Y-m-d',
|
||||
'cast_to_datetime_serialization' => 'datetime:Y-m-d H:i:s',
|
||||
'cast_to_custom_datetime' => 'custom_datetime:Y-m-d H:i:s',
|
||||
'cast_to_immutable_date' => 'immutable_date',
|
||||
'cast_to_immutable_custom_datetime' => 'immutable_custom_datetime:Y-m-d H:i:s',
|
||||
'cast_to_immutable_datetime' => 'immutable_datetime',
|
||||
'cast_to_timestamp' => 'timestamp',
|
||||
'cast_to_encrypted' => 'encrypted',
|
||||
'cast_to_encrypted_array' => 'encrypted:array',
|
||||
'cast_to_encrypted_collection' => 'encrypted:collection',
|
||||
'cast_to_encrypted_json' => 'encrypted:json',
|
||||
'cast_to_encrypted_object' => 'encrypted:object',
|
||||
'cast_to_as_collection' => AsCollection::class,
|
||||
'cast_to_as_enum_collection' => AsEnumCollection::class,
|
||||
'cast_to_as_array_object' => AsArrayObject::class,
|
||||
];
|
||||
protected function casts(): array
|
||||
{
|
||||
return [
|
||||
'cast_to_date_serialization' => 'date:Y-m-d',
|
||||
'cast_to_datetime_serialization' => 'datetime:Y-m-d H:i:s',
|
||||
'cast_to_custom_datetime' => 'custom_datetime:Y-m-d H:i:s',
|
||||
'cast_to_immutable_date' => 'immutable_date',
|
||||
'cast_to_immutable_custom_datetime' => 'immutable_custom_datetime:Y-m-d H:i:s',
|
||||
'cast_to_immutable_datetime' => 'immutable_datetime',
|
||||
'cast_to_timestamp' => 'timestamp',
|
||||
'cast_to_encrypted' => 'encrypted',
|
||||
'cast_to_encrypted_array' => 'encrypted:array',
|
||||
'cast_to_encrypted_collection' => 'encrypted:collection',
|
||||
'cast_to_encrypted_json' => 'encrypted:json',
|
||||
'cast_to_encrypted_object' => 'encrypted:object',
|
||||
'cast_to_as_collection' => AsCollection::class,
|
||||
'cast_to_as_collection_using' => AsCollection::using(AdvancedCastCollection::class),
|
||||
'cast_to_as_enum_collection' => AsEnumCollection::class,
|
||||
'cast_to_as_enum_collection_of' => AsEnumCollection::of(AdvancedCastEnum::class),
|
||||
'cast_to_as_array_object' => AsArrayObject::class,
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user