rafflesargentina / l8-repository
可重用的 Laravel 仓库接口。
v1.0
2021-01-20 15:28 UTC
Requires
- php: >=7.3
- illuminate/config: 8.*
- illuminate/support: 8.*
This package is not auto-updated.
Last update: 2024-09-27 06:40:15 UTC
README
Caffeinated Repository
入门指南
简介
Caffeinated Repository 包允许以标准样板仓库接口的方式实现。这包括标准 Eloquent 方法,无需静态或门面驱动即可直接使用。但是,不要担心,Caffeinated Repository 包在自定义(例如覆盖)提供接口或添加自己的方法方面不会对你有任何限制。
安装 Caffeinated Repository
建议您使用 Composer 安装此包。
composer require caffeinated/repository
此包符合 PSR-1、PSR-2 和 PSR-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')); } }