lesichkovm/laravel-advanced-model

Laravel的高级模型类

v1.9.0 2022-05-04 07:09 UTC

This package is auto-updated.

Last update: 2024-09-04 12:07:56 UTC


README

Laravel的高级模型。支持Laravel默认的SnakeCase,以及CamelCase字段名,并增强了主键支持——基于日期的人性化唯一ID和UUID。

背景

  1. 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)
  1. 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)
  1. 默认的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