caffeinated/仓库

此软件包已被废弃,不再维护。没有建议的替代软件包。

可重用Laravel仓库接口。

v3.4 2018-09-06 23:02 UTC

This package is auto-updated.

Last update: 2020-04-06 18:15:37 UTC


README

caffeine 仓库

Source License

入门指南

简介

Caffeinated Repository软件包允许实现标准样板仓库接口的方法。它直接提供非静态、非门面驱动的Eloquent标准方法。不过请放心!Caffeinated Repository软件包不会在定制(例如覆盖)提供的接口或添加自己的方法方面对您有任何限制。

安装Caffeinated Repository

建议您使用Composer安装此软件包。

composer require caffeinated/repository

此软件包符合 PSR-1PSR-2PSR-4 规范。如果您发现任何符合性疏漏,请通过拉取请求发送补丁。

使用仓库

创建模型

像往常一样创建您的模型。我们将围绕模型包装我们的仓库来访问和查询数据库以获取所需的信息。

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model

class Book extends Model
{
    //
}

创建仓库

创建一个新的仓库类——通常这些类存储在 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'));
    }
}