mirror of
https://github.com/barryvdh/laravel-ide-helper.git
synced 2026-08-18 01:57:13 +00:00
Merge branch '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
|
### 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
|
2024-07-12, 3.1.0
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
|
|||||||
@@ -410,8 +410,6 @@ class ModelsCommand extends Command
|
|||||||
case 'immutable_datetime':
|
case 'immutable_datetime':
|
||||||
$realType = '\Carbon\CarbonImmutable';
|
$realType = '\Carbon\CarbonImmutable';
|
||||||
break;
|
break;
|
||||||
case AsCollection::class:
|
|
||||||
case AsEnumCollection::class:
|
|
||||||
case 'collection':
|
case 'collection':
|
||||||
$realType = '\Illuminate\Support\Collection';
|
$realType = '\Illuminate\Support\Collection';
|
||||||
break;
|
break;
|
||||||
@@ -437,6 +435,18 @@ class ModelsCommand extends Command
|
|||||||
continue;
|
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->checkForCastableCasts($realType, $params);
|
||||||
$realType = $this->checkForCustomLaravelCasts($realType);
|
$realType = $this->checkForCustomLaravelCasts($realType);
|
||||||
$realType = $this->getTypeOverride($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;
|
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\AsArrayObject;
|
||||||
use Illuminate\Database\Eloquent\Casts\AsCollection;
|
use Illuminate\Database\Eloquent\Casts\AsCollection;
|
||||||
use Illuminate\Database\Eloquent\Casts\AsEnumCollection;
|
use Illuminate\Database\Eloquent\Casts\AsEnumCollection;
|
||||||
@@ -11,21 +13,26 @@ use Illuminate\Database\Eloquent\Model;
|
|||||||
|
|
||||||
class AdvancedCast extends Model
|
class AdvancedCast extends Model
|
||||||
{
|
{
|
||||||
protected $casts = [
|
protected function casts(): array
|
||||||
'cast_to_date_serialization' => 'date:Y-m-d',
|
{
|
||||||
'cast_to_datetime_serialization' => 'datetime:Y-m-d H:i:s',
|
return [
|
||||||
'cast_to_custom_datetime' => 'custom_datetime:Y-m-d H:i:s',
|
'cast_to_date_serialization' => 'date:Y-m-d',
|
||||||
'cast_to_immutable_date' => 'immutable_date',
|
'cast_to_datetime_serialization' => 'datetime:Y-m-d H:i:s',
|
||||||
'cast_to_immutable_custom_datetime' => 'immutable_custom_datetime:Y-m-d H:i:s',
|
'cast_to_custom_datetime' => 'custom_datetime:Y-m-d H:i:s',
|
||||||
'cast_to_immutable_datetime' => 'immutable_datetime',
|
'cast_to_immutable_date' => 'immutable_date',
|
||||||
'cast_to_timestamp' => 'timestamp',
|
'cast_to_immutable_custom_datetime' => 'immutable_custom_datetime:Y-m-d H:i:s',
|
||||||
'cast_to_encrypted' => 'encrypted',
|
'cast_to_immutable_datetime' => 'immutable_datetime',
|
||||||
'cast_to_encrypted_array' => 'encrypted:array',
|
'cast_to_timestamp' => 'timestamp',
|
||||||
'cast_to_encrypted_collection' => 'encrypted:collection',
|
'cast_to_encrypted' => 'encrypted',
|
||||||
'cast_to_encrypted_json' => 'encrypted:json',
|
'cast_to_encrypted_array' => 'encrypted:array',
|
||||||
'cast_to_encrypted_object' => 'encrypted:object',
|
'cast_to_encrypted_collection' => 'encrypted:collection',
|
||||||
'cast_to_as_collection' => AsCollection::class,
|
'cast_to_encrypted_json' => 'encrypted:json',
|
||||||
'cast_to_as_enum_collection' => AsEnumCollection::class,
|
'cast_to_encrypted_object' => 'encrypted:object',
|
||||||
'cast_to_as_array_object' => AsArrayObject::class,
|
'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;
|
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\AsArrayObject;
|
||||||
use Illuminate\Database\Eloquent\Casts\AsCollection;
|
use Illuminate\Database\Eloquent\Casts\AsCollection;
|
||||||
use Illuminate\Database\Eloquent\Casts\AsEnumCollection;
|
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_collection
|
||||||
* @property \Illuminate\Support\Collection $cast_to_as_enum_collection
|
* @property \Illuminate\Support\Collection $cast_to_as_enum_collection
|
||||||
* @property \ArrayObject $cast_to_as_array_object
|
* @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 newModelQuery()
|
||||||
* @method static \Illuminate\Database\Eloquent\Builder<static>|AdvancedCast newQuery()
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|AdvancedCast newQuery()
|
||||||
* @method static \Illuminate\Database\Eloquent\Builder<static>|AdvancedCast query()
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|AdvancedCast query()
|
||||||
@@ -49,21 +53,26 @@ use Illuminate\Database\Eloquent\Model;
|
|||||||
*/
|
*/
|
||||||
class AdvancedCast extends Model
|
class AdvancedCast extends Model
|
||||||
{
|
{
|
||||||
protected $casts = [
|
protected function casts(): array
|
||||||
'cast_to_date_serialization' => 'date:Y-m-d',
|
{
|
||||||
'cast_to_datetime_serialization' => 'datetime:Y-m-d H:i:s',
|
return [
|
||||||
'cast_to_custom_datetime' => 'custom_datetime:Y-m-d H:i:s',
|
'cast_to_date_serialization' => 'date:Y-m-d',
|
||||||
'cast_to_immutable_date' => 'immutable_date',
|
'cast_to_datetime_serialization' => 'datetime:Y-m-d H:i:s',
|
||||||
'cast_to_immutable_custom_datetime' => 'immutable_custom_datetime:Y-m-d H:i:s',
|
'cast_to_custom_datetime' => 'custom_datetime:Y-m-d H:i:s',
|
||||||
'cast_to_immutable_datetime' => 'immutable_datetime',
|
'cast_to_immutable_date' => 'immutable_date',
|
||||||
'cast_to_timestamp' => 'timestamp',
|
'cast_to_immutable_custom_datetime' => 'immutable_custom_datetime:Y-m-d H:i:s',
|
||||||
'cast_to_encrypted' => 'encrypted',
|
'cast_to_immutable_datetime' => 'immutable_datetime',
|
||||||
'cast_to_encrypted_array' => 'encrypted:array',
|
'cast_to_timestamp' => 'timestamp',
|
||||||
'cast_to_encrypted_collection' => 'encrypted:collection',
|
'cast_to_encrypted' => 'encrypted',
|
||||||
'cast_to_encrypted_json' => 'encrypted:json',
|
'cast_to_encrypted_array' => 'encrypted:array',
|
||||||
'cast_to_encrypted_object' => 'encrypted:object',
|
'cast_to_encrypted_collection' => 'encrypted:collection',
|
||||||
'cast_to_as_collection' => AsCollection::class,
|
'cast_to_encrypted_json' => 'encrypted:json',
|
||||||
'cast_to_as_enum_collection' => AsEnumCollection::class,
|
'cast_to_encrypted_object' => 'encrypted:object',
|
||||||
'cast_to_as_array_object' => AsArrayObject::class,
|
'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