deseco/repository

此包已被废弃,不再维护。未建议替代包。

为 Laravel 提供简单的仓库。

v2.0.2 2018-01-17 08:55 UTC

This package is not auto-updated.

Last update: 2020-10-16 07:31:40 UTC


README

包目前正在开发中 !!

信息

一个简单的包,允许在 Laravel 应用程序中实现仓库模式。受 Bosnadev 包的启发。支持条件、查询过滤器,并可交互使用 fractal。

安装

composer require deseco/repository

将服务提供者添加到 config/app.php

$providers = [
    ....
   
    Deseco\Repositories\RepositoriesServiceProvider::class,
]; 

发布配置

php artisan vendor:publish  --provider="Deseco\Repositories\RepositoriesServiceProvider"

设置仓库配置,例如

  • 命名空间 - 仓库命名空间
  • 后缀 - 仓库类后缀,例如:Repository
  • 路径 - 仓库路径
  • 类 - 工厂仓库类,当注入时允许轻松创建仓库(在 Phpstorm 中具有自动完成功能)

用法

您可以使用以下命令创建仓库

php artisan repository:make

您将被要求指定仓库名称

Enter repository name::
> Clients

和别名(可选)

Enter alias name [clients]:
>

您将获得两个文件

Generating repository...

+-------------------+-------------------+----------+---------+
| Class             | Repository        | Property | Status  |
+-------------------+-------------------+----------+---------+
| ClientsRepository | -                 | -        | Created |
| Repositories      | ClientsRepository | clients  | Created |
+-------------------+-------------------+----------+---------+

Done!

仓库类(实现模型方法)

<?php

namespace App\Repositories;

use Deseco\Repositories\Eloquent\Repository;

class ClientsRepository extends Repository
{
    /**
     * @return mixed
     */
    public function model()
    {
        // return Model::class;
    }
}

和 RepositoriesFactory

<?php

namespace App\Repositories;

use Deseco\Repositories\Factories\RepositoryFactory;

/**
 * Class Repositories
 */
class Repositories extends RepositoryFactory
{
    /**
	 * @var ClientsRepository
	 */
	public $clients = 'clients';
}

现在您可以使用工厂(您具有属性和方法的完整自动完成功能)

Route::get('/', function (\App\Repositories\Repositories $repo) {
    return $repo->clients->all();
});

或将仓库注入到类/方法中并单独使用

public function index(ClientsRepository $clientsRepository)
{
    $clients = $clientsRepository->all();
}