miladimos / laravel-repository
这是一个强大且易于使用的仓储模式包
0.8.8
2023-04-12 10:00 UTC
Requires
- php: >=7.4|^8.0
README
在您的项目中
composer require miladimos/laravel-repository
用于安装包
php artisan repository:install
用于创建新的仓储
php artisan make:repository {ModelName}
示例
php artisan make:repository Tag
这会创建一个 TagRepository 和 TagEloquentRepositoryInterface
接下来,您必须在 RepositoryServiceProvider 的 repositories 属性中添加 Repository,例如
protected $repositories = [ [ TagEloquentRepositoryInterface::class, TagRepository::class, ], ];
然后在您的控制器中添加以下内容
private $tagRepo; public function __construct(TagEloquentRepositoryInterface $tagRepo) { $this->tagRepo = $tagRepo; }
在 TagEloquentRepositoryInterface 中添加自定义方法并实现它们。
您必须有一个包含以下内容的提供者并注册它
<?php namespace App\Providers; use Illuminate\Support\ServiceProvider; class RepositoryServiceProvider extends ServiceProvider { /** * define your repositories here */ protected $repositories = [ [ ModelEloquentRepositoryInterface::class, ModelRepository::class ], ]; public function register() { foreach ($this->repositories as $repository) { $this->app->bind($repository[0], $repository[1]); } } }
或者通过以下命令自动创建它
php artisan make:repository:provider
并将其添加到 app.php 提供者
App\Providers\RepositoryServiceProvider::class,
方法
$model->all($columns = ['*']); $model->create(array $data); $model->update(array $data, $id, $attribute = "id"); $model->find($id); $model->findOrFail($id); $model->findWhere(string $field, $condition, $columns); $model->first(); $model->last(); $model->firstOrCreate(); $model->whereIn($attribute, array $values); $model->max($column); $model->min($column); $model->avg($column); $model->delete($id); $model->truncate(); $model->count($columns = ['*']); $model->paginate($columns = ['*'], $perPage = 8); $model->simplePaginate($limit = null, $columns = ['*']); $model->search(array $query, $columns = ["*"]); $model->pluck($value, $key = null); $model->with($relations); $model->toSql();