svensp / laravel-thin-repository
用于在获取/查找时添加和遗忘条件的仓库特性
2.0.0
2020-09-10 16:00 UTC
Requires (Dev)
- orchestra/testbench: ^4.0
- phpunit/phpunit: ^9.3
This package is auto-updated.
Last update: 2024-09-11 01:21:12 UTC
README
thin repository尝试将Laravel Eloquent querybuilder中发现的美丽链式条件扩展到该模型的仓库。
更新
- 1.0.0 -> 2.0.0: condition和advancedCondition函数不再以默认值作为名称参数,而是返回一个ElementRenamer,允许通过
named
方法指定名称。
示例:$this->condition(function() {})->named('user');
安装
laravel thin repository通过composer安装
composer install svensp/laravel-thin-repository
使用
laravel thin repository的核心是ThinRepository特性。它将为你的仓库提供以下方法
- public find() - 带当前条件的findOrFail
- public get() - 带当前条件的get
- protected condition(Closure $condition, string $name = null) - 通过lambda函数设置条件
- protected advancedCondition(Condition $condition, string $name = null) - 通过实现
Condition
接口的对象设置条件
除非指定名称,否则条件将堆叠。具有相同名称的条件将相互覆盖。
<?php /** * An example Repository using the ThinRepository trait to do its work **/ class ExampleRepository { use ThinRepository\ThinRepository; protected $modelClassPath = ExampleModel::class; public function forUser($userId) { $this->condition(function($builder) use ($userId) { $builder->where('user_id', $userId); }); return $this; } } $example = app(ExampleRepository::class)->forUser(5)->find(); $examples = app(ExampleRepository::class)->forUser(5)->get();