rafflesargentina / l8-repository

可重用的 Laravel 仓库接口。

v1.0 2021-01-20 15:28 UTC

This package is not auto-updated.

Last update: 2024-09-27 06:40:15 UTC


README

Caffeinated Repository

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'));
    }
}