znck / plug
Laravel Eloquent 的插件
Requires
- php: >7.0
- illuminate/database: ^5.2
- illuminate/support: ^5.2
- illuminate/validation: ^5.2
- ramsey/uuid: ^3.2
- znck/belongs-to-through: ^2.2
Requires (Dev)
- fabpot/php-cs-fixer: ^1.11
- graham-campbell/testbench: ^3.1
- mockery/mockery: ^0.9.4
- phpunit/php-code-coverage: ^3.1
- phpunit/phpunit: ^5.1
- satooshi/php-coveralls: ^1.0
README
一组可插拔的 Eloquent 特性,用于增强您的模型。
安装
需要 PHP 7.0+。
要获取 Plug 的最新版本,只需使用 Composer 引入项目即可
$ composer require znck/plug
当然,您也可以手动更新 require 块并运行 composer update
,如果需要的话
{ "require": { "znck/plug": "^0.1" } }
一旦安装了 Plug,您就可以使用 plug[gable] 特性。
用法
Plug 的所有功能都作为特性提供,因此您可以直接将它们放入模型类中。特性将自动启动。无需配置。
<?php namespace App; use Illuminate\Database\Eloquent\Model; use Znck\Plug\Eloquent\Traits\BelongsToThrough; class User extends Model { use BelongsToThrough; }
最佳实践是创建一个抽象模型类并使用所需的插件(特性)。
<?php namespace App; use Illuminate\Database\Eloquent\Model; use Znck\Plug\Eloquent\Traits\BelongsToThrough; use Znck\Plug\Eloquent\Traits\FixBelongsTo; use Znck\Plug\Eloquent\Traits\FixMorphTo; use Znck\Plug\Eloquent\Traits\UuidKey; use Znck\Plug\Eloquent\Traits\FixForeignKey; use Znck\Plug\Eloquent\Traits\SelfDecorating; use Znck\Plug\Eloquent\Traits\SelfValidating; abstract class UUIDBaseModel extends Model { use FixBelongsTo, FixMorphTo, BelongsToThrough, UuidKey, SelfValidating, SelfDecorating, FixForeignKey; public $incrementing = true; // Explained below. }
特性
-
BelongsToThrough
Eloquent 中缺少 HasManyThrough 关系的逆关系。此插件(特性)提供了belongsToThrough
关系。在底层,它使用 [znck/belongs-to-through] 包中的BelongsToThrough
。 -
FixBelongsTo
为了保持belongsTo
关系的预期行为,Eloquent 引入了一个错误。如果模型具有非自增主键(例如:UUID)并且belongsTo
关系值为 null,那么如果它是预加载的,它将因 SQL 错误而崩溃。 问题 12051 -
FixForeignKey
Eloquent 在猜测外键字段名称时具有误导性的行为。它将模型类的单数小写名称作为基础,并追加_id
,这非常反直觉。预期行为是从表名称中猜测外键字段名称。 问题 10724 -
FixMorphTo
关系类MorphTo
继承自BelongsTo
,因此它容易受到相同的错误的影响。 -
SelfDecorating@已弃用
它使数据库条目保持干净。例如:name
列的值应以大写字母开头。 -
SelfValidating@已弃用,改用 znck/repository
它在保存或更新之前验证属性,因此只有有效数据才会进入数据库。 -
UuidKey
它允许使用非自增的 UUID 主键。
class User extends Model { use UuidKey; // Make sure to set $incrementing to false. public $incrementing = false; }
变更日志
有关最近更改的更多信息,请参阅 CHANGELOG。
测试
$ composer test
贡献
有关详细信息,请参阅 CONTRIBUTING 和 CONDUCT。
安全性
如果您发现任何与安全相关的问题,请通过:author_email 发送电子邮件,而不是使用问题跟踪器。
鸣谢
许可协议
MIT 许可协议(MIT)。有关更多信息,请参阅 许可文件。