san4io/repository

可重用的 Laravel 仓库接口。

v3.1.1 2017-06-01 17:38 UTC

README

Source License

入门指南

介绍

Caffeinated Repository 包允许实现标准样板仓库接口的方法。这包括直接从盒子里提供的非静态、非门面驱动的 Eloquent 方法。但别担心,Batman!Caffeinated Repository 包在自定义(例如重写)提供的接口或添加自己的方法时不会限制您。

安装 Caffeinated Repository

建议您使用 Composer 安装此包。

composer require caffeinated/repository

此包符合 PSR-1PSR-2PSR-4 标准。如果您发现任何不符合之处,请通过 pull request 发送补丁。

使用仓库

创建模型

创建您的模型,就像您通常所做的那样。我们将把我们的仓库包裹在我们的模型周围,以便访问和查询数据库以获取所需的信息。

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model

class Book extends Model
{
    //
}

创建仓库

创建一个新的 Repository 类 - 通常这些类存储在 Repositories 目录中。每个仓库实例有一些要求

  • 仓库类必须扩展 Caffeinated EloquentRepository 类。
  • 仓库类必须指定一个指向模型的公共属性。
  • 仓库类必须指定一个缓存标签数组。这些标签由包用于在数据库中相关值更改时自动处理缓存失效。
<?php

namespace App\Repositories;

use App\Models\Book;
use Caffeinated\Repository\Repositories\EloquentRepository;

class BookRepository extends EloquentRepository
{
    /**
     * @var Model
     */
    public $model = Book::class;

    /**
     * @var array
     */
    public $tag = ['book'];
}

注入仓库

一旦您构建和配置了仓库实例,您可以在需要的地方注入该类。

<?php

namespace App\Http\Controllers;

use App\Repositories\BookRepository;

class BookController extends Controller
{
    /**
     * @var BookRepository
     */
    protected $book;

    /**
     * Create a new BookController instance.
     *
     * @param  BookRepository  $book
     */
    public function __construct(BookRepository $book)
    {
        $this->book = $book;
    }

    /**
     * Display a listing of all books.
     *
     * @return Response
     */
    public function index()
    {
        $books = $this->book->findAll();

        return view('books.index', compact('books'));
    }
}