sim-vzla / laracruds
Laravel框架的仓库模式辅助类
Requires (Dev)
- orchestra/testbench: ~3.2
- phpunit/phpunit: ^5.1
This package is not auto-updated.
Last update: 2024-09-14 18:47:28 UTC
README
##Laracruds ####Laravel框架的仓库模式助手和验证器
此包可以帮助您在编写eloquent模型的CRUD时更加高效,为您提供一组简单而强大的工具。
#####安装
composer require sim-vzla/laracruds
然后在config/app.php中的提供者数组中添加
Laracruds\LaracrudsServiceProvider::class
使用
php artisan vendor:publish --provider="Laracruds\LaracrudsServiceProvider"
#####使用 假设您想创建一个User模型仓库。那么,只需扩展包的基础仓库类
<?php namespace App\Repositories; use Laracruds\EloquentRepository as BaseRepository; use App\User; class UserRepository extends BaseRepository { public function __construct() { parent::__construct(new User); } }
此类为您提供一些CRUD方法
-
create($data)
-
findById($id)
-
update($model, $data)
-
deleteById($id)
-
batchDelete($idArray)
您可以在API参考中找到更多关于它们的信息。
到目前为止,一切都很标准,但接下来是魔法所在
EloquentRepository类接受一个可选的第二个参数,该参数期望一个Laracruds\BaseValidator
实例,用于在创建和更新方法中验证数据。但如果您不提供,则该类将使用模型类名并尝试在配置文件中找到它。
所以,如果您向EloquentRepository构造函数传递App\User
的实例,则该类将假设在`App\Helpers\Validators`文件夹中存在一个UserValidator
。
#####验证
验证类看起来像这样
<?php namespace App\Helpers\Validators; use Laracruds\BaseValidator; class UserValidator extends BaseValidator { public function rules($id) { return [ 'email' => 'required|email|unique:users,email,'.$id, 'password' => 'required|min:6' ]; } }
您只需在rules()
方法中放置要应用的自定义规则(来自Laravel默认提供的规则),Laracruds将在需要时使用它们。
但我们想能够使用相同的规则数组进行创建和更新。因此,我们面临的问题是需要和唯一规则...别担心...我们已为您解决了这个问题:当在更新方法中调用BaseValidator
类的validate()
方法时,所有required
规则都会从数组中动态删除,只需确保将其作为第一个规则声明在键中即可。
'email' => 'required|email',
'name' => 'required|string'
为了避免在更新时使用唯一规则,只需将rules()
函数接收到的自动接收到的$id参数附加到数组键的末尾。只需确保将唯一规则放置在键的末尾即可
public function rules($id)
{
return [
'email' => 'required|email|unique:users,email,'.$id,
'password' => 'required|min:6'
];
}
要获取验证错误,请使用getValidator()
方法从仓库类检索验证器
$validator = $repository->getValidator()
然后调用errors方法
$validator->errors();