prophecy/servicepacker

dev-master 2019-09-28 04:47 UTC

This package is auto-updated.

Last update: 2020-05-28 06:09:01 UTC


README

Build Status

Service Packer 是一个用于 Service & Repository 模式的包。与其重新编写或复制旧项目中的文件,不如创建一个简单的包,并随着时间的推移从我所积累的经验中对其进行升级。

安装

composer require prophecy/servicepacker

注册 Artisan 命令

在你的 app/Console/Kernel.php 中添加以下行

use Prophecy\ServicePacker\Console\{GenerateService,GenerateRepository};

并在 $commands 数组中添加

    GenerateService::class,
    GenerateRepository::class,

最终产品应该看起来像这样

protected $commands = [
    GenerateService::class,
    GenerateRepository::class,
];

使用 artisan 命令行创建存储库

php artisan make:repo User

它将在你的 "app/Repositories" 目录中创建一个 UserRepository 默认情况下,它将扩展包的基本存储库

使用 artisan 命令行创建服务

php artisan make:service User

它将在你的 "app/Services" 目录中创建一个 UserService 默认情况下,它将扩展包的基本服务

如果你想在使用服务时使用默认的 CRUD 操作,你可以使用 crudable 标志

php artisan make:service User crudable

它将使用一个名为 crudable 的 trait,这将为你提供 CRUD 函数的基本功能

创建、读取、编辑、更新、删除等操作应分配一个责任。如果你有用户和帖子,它们的创建数据应该不同,包括其验证。因此,验证应在你的端完成,并由其他函数处理。因此,这些常见函数已被分离。

API

存储库

  • instance() 返回模型实例 ($this->model)

  • create($array) 方法接受一个数据数组,并使用 eloquent 的 create。 相当于 Model::create()

  • CreateMultiple($arrayOfArray) 方法接受一个数组数组,如果你想在一次中存储多个记录。

  • find($id) 接受模型的主键并按该主键查找。

  • __ 注意:如果你有不同的主键列,例如 user_id 而不是 id,你可以在模型中设置 primaryKey 属性,这样你将不会遇到任何错误。

  • findFirst(array $conditions,$select) 接受一个或多个条件数组和一个 $select。$select 可以是一个字符串或数组。它根据这些条件搜索,如果找到,则选择第一条记录并选择特定列。 $select 默认设置为选择所有列。

  • getWhere($conditions,$select,$paginate) 接受一个或多个条件数组,$select 和一个分页变量,分页默认设置为 0,因此将返回所有记录。

  • getWhereCount($condtions) 接受一个或多个条件数组,并根据该搜索统计行数

  • first() 返回表的第一行

  • latest() 返回所有记录,并根据 created_at 列 以降序排序

  • last() 返回列的最后一行

  • all() 返回表中的所有记录

  • update(array $attributes, int $primaryKey) 接收一个属性数组和一个主键,使用 find($id) 在数据库中进行搜索,如果找到则更新列。

  • delete($primaryKey) 根据主键搜索结果进行删除。

  • whereHas(array $conds, $list, $select) 接收 $conditions 数组或数组数组,以及和之前一样的 $select,但作为第二个参数它还接收一个 $list。首先它将根据条件搜索所有记录,根据 $select 选择,然后运行 $collection->has($list)。返回集合。

  • getFiltered(array $conds, $callback, $select, $paginate) 接收条件数组或数组数组,之前的 $select,然后还有一个 $callback,然后根据回调过滤它们。然后分页或返回所有这些。