cybercog/laravel-eloquent-flag

Laravel Eloquent 布尔值 & 时间戳标记属性行为。

6.1.0 2024-03-09 14:41 UTC

README

cog-laravel-eloquent-flag

Discord Releases Build StyleCI Code Quality License

介绍

Eloquent 布尔值 & 时间戳标记属性行为。只需几分钟即可增强 Eloquent 模型,使用常用状态标记如 ActivePublishedApproved 等。

内容

特性

  • 专为与 Laravel Eloquent 模型协同工作而设计。
  • 每个模型可以有多个标记。
  • 每个标记都为模型添加全局查询作用域。
  • 2 个逻辑标记组: ClassicInverse
  • 2 种类型的标记: BooleanTimestamp
  • 标记字段自动转换为 bool & DateTime
  • 遵循 PHP 标准建议
  • 带有单元测试。

可用标记列表

任何实体可以同时拥有多个标记。如果标记不能同时为同一实体工作,它们将列在 冲突 列中。

工作原理

Eloquent Flag 是向 Eloquent 模型添加标记属性的一种简单方法。所有标记都有自己的特质,该特质为所需实体添加全局作用域。

有两种类型的标记

  • Boolean 标记是常见的。存储在数据库中为 BOOLEANTINYINT(1) 值。
  • Timestamp 标记在数据库中以可空的 TIMESTAMP 列表示。当您需要知道动作何时执行时很有用。

所有标记都分为两个逻辑组

  • Classic 标记默认显示只有 truetimestamp 标记值的实体。
  • Inverse 标记默认显示只有 falsenull 标记值的实体。

可以通过使用针对每个标记唯一的特殊全局作用域方法检索省略的实体。

示例: 如果您的 Article 模型有 PublishedAt 标记,则 Article::get() 将返回所有已发布的记录。当您需要仅获取未发布的记录时,您可以调用 Article::onlyUnpublished()->get(),而 Article::withUnpublished()->get() 将返回已发布和未发布的文章。

辅助特质将自动将标记属性转换为 DateTime / Carbon 实例或 bool

安装

通过 Composer 拉取此包。

composer require cybercog/laravel-eloquent-flag

使用

使用示例在 Wiki 中描述

变更日志

请参阅 CHANGELOG 了解最近更改的详细信息。

升级

请参阅 UPGRADING 了解详细的升级说明。

贡献

请参阅 CONTRIBUTING 了解详细信息。

测试

使用以下命令运行测试

vendor/bin/phpunit

安全

如果您发现任何与安全相关的问题,请通过电子邮件open@cybercog.su联系我们,而不是使用问题跟踪器。

贡献者

Eloquent Flag 贡献者列表

替代方案

请随时以拉取请求的形式添加更多替代方案。

许可

关于 CyberCog

CyberCog是一个爱好者社交团体。研究产品与软件开发中的最佳解决方案是我们的激情所在。

CyberCog