lesichkovm / laravel-advanced-model
Laravel的高级模型类
v1.9.0
2022-05-04 07:09 UTC
Requires
- illuminate/database: 5.*|>6.20.26|7.*|8.*|9.*|10.*
README
Laravel的高级模型。支持Laravel默认的SnakeCase,以及CamelCase字段名,并增强了主键支持——基于日期的人性化唯一ID和UUID。
背景
- Snake case(蛇形命名)高级模型。这是Laravel的默认模型。此模型使用以下字段
id - Identity field
created_at - When was the record created
updated_at - When was the record last modified
deleted_at - When was the record deleted (soft delete)
- Camel case(驼峰命名)。驼峰命名比蛇形命名更易读,也更短(更多信息请参阅https://en.wikipedia.org/wiki/Camel_case)。此模型将默认的Laravel名称更改为
Id - Identity field
CreatedAt - When was the record created
UpdatedAt - When was the record last modified
DeletedAt - When was the record deleted (soft delete)
- 默认的Laravel模型仅使用递增的主键。虽然它适用于基本用例,但这在大系统中去重记录时会导致额外的工作。更好的选择是使用唯一ID。此类支持UUID以及更人性化的唯一ID(HUID)。
人性化的唯一ID(HUID)
人性化的唯一ID(HUID)是由日期和时间以及随机长度的后缀组成的数字字符串。通常长度为20,但可以根据需要增加,以获得更高的唯一性。例如:20170715081335698999
HUID的独一无二程度不如UUID,但在日常使用中更有价值
- 它们提供了足够的信息来在99.99%的用户场景中唯一标识一条记录。
- 基于日期提供记录创建的时间。
- 可以作为数字进行升序/降序排序。
- 与UUID不同,HUID易于人类阅读,尤其是在用破折号分隔的情况下。
- 可以进一步转换为其他数字基。
{ "human-readable-form" : "20170715-081335-698999", "base10" : "20170715081335698999", "base16" : "117ECC67F58A0F637", "base32" : "MDC4D43APZUIJ", "base36" : "498WXQXN91ET3", "base62" : "O225WNTn5DL", "base64" : "HVindzOeFOt", "base75" : "3hl}S8,t*rO", "base100" : "kh7f8dz/Y8", "crockford32" : "HFV66FXCA1XHQ" }
安装
- 使用Composer
composer require lesichkovm/laravel-advanced-model
用法
扩展你的模型类
- 使用AdvancedSnakeCaseModel
class MyModel extends \AdvancedSnakeCaseModel { private $useUniqueId = true; }
- 使用AdvancedCamelCaseModel
class MyModel extends \AdvancedCamelCaseModel { private $useUniqueId = true; }
- 人性化的唯一ID(HUID)
class MyModel extends \AdvancedSnakeCaseModel { private $useUniqueId = true; }
- 通用唯一ID(UUID)
class MyModel extends \AdvancedSnakeCaseModel { private $useUuid = true; }
- 自增
class MyModel extends \AdvancedSnakeCaseModel { private $incrementing = true; }
创建模型和检索ID
- 创建蛇形命名模型实例并检索ID
$instance = new MyModel; $instance->save(); echo $instance->id;
- 创建新的驼峰命名模型实例并检索ID
$instance = new MyModel; $instance->save(); echo $instance->Id;
其他方法
-
chunks($perChunk)
-
getConnName
-
getTableName
-
trash
-
untrash