该软件包最新版本(2.2)没有可用的许可证信息。

2.2 2022-09-21 03:55 UTC

This package is auto-updated.

Last update: 2024-09-30 01:18:19 UTC


README

要开始使用 基础仓库,请使用 Composer 将该软件包添加到项目依赖项

    composer require rebbull/dev

配置

Laravel

'providers' => [
    // Other service providers...

    Rebbull\RepositoryServiceProvider::class,
],

基本用法

接下来,您可以开始使用仓库。如果您想创建与模型对应的仓库(例如:UserRepository),请运行以下命令行

php artisan make:repository UserRepository -i

运行此命令后,软件包会自动在 Repository 目录中生成两个文件:UserRepository 和 UserRepositoryInterface。UserRepository 继承自 AbstractRepository,因此您可以使用 AbstractRepository 中的方法。

<?php

namespace App\Repositories;

use App\Models\User;
use Rebbull\Repository\Contracts\AbstractRepository;
use App\Repositories\Contracts\UserRepositoryInterface;

class UserRepository extends AbstractRepository implements UserRepositoryInterface
{
    protected $model;

    /**
     * UserRepository construct
     *
     * @param  mixed $model
     *
     * @return void
     */
    public function __construct(User $model)
    {
        parent::__construct($model);
    }
}

接下来,创建控制器,运行以下命令行

php artisan make:con UserController -c

运行此命令后,软件包会自动在 Http/Controller/Api 目录中生成 UserController 文件。UserController 继承自 baseController。

<?php

namespace App\Http\Controllers\Api;

use App\Repositories\Contracts\UserRepositoryInterface;
use Rebbull\Http\Controllers\Api\BaseController;

class UserController extends BaseController
{
    protected $tag;

    public function __construct(UserRepositoryInterface $tag)
    {
        parent::__construct($tag);
    }
}

在 AppServiceProvider 中注册

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use App\Repositories\UserRepository;
use App\Repositories\Contracts\UserRepositoryInterface;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        //
    }

    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        $this->app->bind(UserRepositoryInterface::class, UserRepository::class);
    }
}

检索用户详情

在控制器中,您可以完全重写您想要的方法

<?php

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use App\Repositories\Contracts\UserRepositoryInterface;
use Rebbull\Http\Controllers\Api\BaseController;

class UserController extends BaseController
{
    /**
     * @var UserRepositoryInterface
     */
    private $user;

    public function __construct(UserRepositoryInterface $user )
    {
        $this->user = $user;
    }

    public function show($id) 
    {
        //
    }
}

基础仓库中的所有函数

public function all(array $attributes, array $relations = []): Collection;

public function store(array $attributes): ?Model;

public function show(int $id): ?Model;

public function update(int $id ,array $attributes): bool;

public function destroy(int $id): bool;

public function allTrashed(): Collection;

public function findTrashedById(int $id): ?Model;

public function findOnlyTrashedById(int $id): ?Model;

public function restoreById(int $id): bool;

public function permanentlyDeleteById(int $id): bool;