ollieread/laravel-toolkit

此包已被弃用,不再维护。作者建议使用 sprocketbox/laravel-toolkit 包。

v3.3.1 2018-03-28 16:37 UTC

This package is auto-updated.

Last update: 2020-01-09 10:54:57 UTC


README

Latest Stable Version Total Downloads Latest Unstable Version License

此工具包旨在简化Laravel应用的日常开发。它包含了一些我在几乎所有项目中都会使用的基本功能和方法。

版本

版本 PHP Laravel
v1 >= 5.6.4 5.3
v2 >= 5.6.4 5.4
< v3.2 >= 7.1 5.4
=> v3.2 >= 7.1 5.5+

安装

此包可在 Packagist 上找到,您可以使用Composer进行安装。

composer require ollieread/laravel-toolkit

使用

此工具包提供四种功能。

Eloquent

此工具包提供两种不同的作用域,打包在一起。请注意,这些只能提供辅助功能,您需要自己处理数据库模式。

启用

如果您有一个具有启用/活动状态的模型,您可以通过以下合同和特性添加此功能。

Ollieread\Toolkit\Eloquent\Enabled\EnabledContract
Ollieread\Toolkit\Eloquent\Enabled\EnabledTrait

将这些添加到您的模型中,将自动添加以下作用域。

Ollieread\Toolkit\Eloquent\Enabled\EnabledScope

您的启用状态列必须是一个布尔型/整数字段。如果它不是名为 enabled,您可以覆盖特性提供的属性。

protected $enabled = 'enabled';

一旦添加了所有这些,查询此模型将默认只返回启用条目。要返回所有条目,请使用以下方法,类似于软删除。

withDisabled()

如果只想返回禁用条目,请使用以下方法。

disabled()

排序

如果您有一个可排序的模型,您可以通过将以下特性和合同添加到您的模型中添加此功能。

Ollieread\Toolkit\Eloquent\Order\OrderContract
Ollieread\Toolkit\Eloquent\Order\OrderTrait

这将添加以下全局作用域。

Ollieread\Toolkit\Eloquent\Order\OrderScope

您的查询现在将按排序字段排序,该字段的名称由覆盖特性提供的属性指定。此列必须是一个整数。

protected $order = 'order';

您可以使用以下直观的宏更改给定模型的顺序。

moveUp()
moveDown()
moveToTop()
moveToBottom()

向上、向下、移至顶部或底部移动行将更正其他所有行的顺序值。列值将是数字,顶部为0。

基本验证器

基本验证器与表单请求有一步之遥。这主要是因为我不喜欢让HTTP层验证数据,这不是它的职责。

要创建验证器,扩展以下类;

Ollieread\Toolkit\Validators\BaseValidator

然后您使用以下方法定义规则;

public function getRules(): array {
    return [];
}

您也可以选择覆盖以下方法,以提供自定义消息;

public function getMessages(): array {
    return [];
}

要验证您的数据,您可以这样做;

$myValidator = MyValidator::validate($arrayOfData[, $model])

第二个参数允许您传入一个模型(在验证更新表单时很有用)。此模型在 getRules()getMessages() 方法中作为 $this->model 可用。

如果验证失败,则会自动抛出 Laravel 验证异常。

要返回底层验证器的实例,您可以执行以下操作;

$myValidator->validator();

基础仓库

基础仓库是一个抽象类,我让所有的仓库都继承自这个类。默认情况下,这个仓库设计用来与 Eloquent 一起工作。

要创建一个仓库,扩展以下类;

Ollieread\Toolkit\Repositories\BaseRepository

要为您的仓库设置模型,添加以下属性;

property $model = MyModel::class;

制作(受保护)

要获取您模型的新的实例,调用以下代码;

$this->make()

查询(受保护)

要在您模型的新的实例上获取新的查询,调用以下代码;

$this->query()

此方法主要存在作为辅助方法(调用 $this->make()->newQuery()),这样我的 IDE 就不会对我抱怨。

获取 ID(受保护)

要从变量中检索 ID,该变量是 ID 或模型实例,调用以下代码;

$this->getId($id)

删除

这是一个基础删除方法,如果传入 ID 则使用查询,如果传入模型则调用辅助方法。要访问它,请调用以下代码;

$repository->delete($model)

按条件获取一个

这是一个通过键 => 值或键 => 值数组检索单行的方法,要使用它,请调用以下代码;

$repository->getOneBy($key, $value)
$repository->getOneBy([$key1 => $value1, $key2 => $value2])

此方法作为魔术方法提供,因此您可以执行以下操作;

$repository->getOneById($value)

通过条件获取

此方法与上面的方法相同,但它将返回所有匹配的结果,而不仅仅是其中一个。要使用它,请调用以下代码;

$repository->getBy($key, $value)
$repository->getBy([$key1 => $value1, $key2 => $value2])

此方法作为魔术方法提供,因此您可以执行以下操作;

$repository->getByDate($value)

事务(静态)

要开始一个事务,调用以下代码;

MyRepository::transaction(function () {
    $this->somethingSomething();
    return true;    
});

此方法的行为与 DB::transaction() 完全相同。

提示

为了简单起见,我喜欢将方法定义添加到仓库的类级别 phpdoc 块中,如下所示;

/**
 * Class MyRepository
 *
 * @method MyModel make()
 * @method null|MyModel getOneById(int $id)
 *
 * @package My\Repositories
 */

用户模型

要获取密码设置修饰符(自动散列)和辅助方法 isPassword($password) 来比较密码,您的用户模型需要扩展以下类;

Ollieread\Toolkit\Models\User

此模型扩展了默认的认证用户,因此您仍然保留该功能。