packagedby / model-repositories
该软件包已被弃用且不再维护。作者建议使用 nathandunn/model-repositories 软件包。
关于此软件包最新版本(2.0.1)的许可信息不可用。
使用 Laravel 模型轻松创建仓库
2.0.1
2022-02-08 21:25 UTC
Requires
- php: ^8.0
- illuminate/database: ^9.0
- illuminate/support: ^9.0
This package is auto-updated.
Last update: 2023-02-18 22:07:38 UTC
README
围绕 Eloquent 模型,允许它们作为仓库使用。
为什么?
因为从“模型对象”获取集合并不是模型的作用,而且在注入模型并在其他上下文中使用它时具有误导性
灵感来源于 Jack Wagstaffe
安装
您可以通过运行以下命令使用 Composer 安装此软件包:
composer require packagedby/model-repositories
使用说明
以下是一个用于 Record
模型的示例仓库。它扩展了基本的 Repository
类并添加了自定义的 forUser
方法。
<?php namespace App\Records; use App\Users\User; use Illuminate\Database\Eloquent\Builder; use PackagedBy\Repositories\Repository; class RecordRepository extends Repository { /** * @param Record $record */ public function __construct(Record $record) { parent::__construct($record); } public function forUser(User $user): Builder { return $this->model->where('user_id', '=', $uuid); } }
您可以在控制器中注入 RecordRepository
。
<?php namespace App\Http\Controllers; use App\Http\Resources\RecordResource; use App\Records\RecordRepository; use Illuminate\Http\Request; class RecordsController extends Controller { protected RecordRepository $recordRepository; public function __construct(RecordRepository $recordRepository) { $this->recordRepository = $recordRepository; } /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function index(Request $request) { $user = $request->user(); $records = $this->recordRepository->forUser($user)->get(); return RecordResource::collection($records); } }