tungnt/laravel-repository

使用 Artisan CLI 创建仓库

1.0.4 2022-12-11 17:01 UTC

This package is auto-updated.

Last update: 2024-09-11 20:32:00 UTC


README

Latest Version on Packagist GitHub license

仓库设置灵感来自 theanik/laravel-more-command 包。此包是那个包的扩展版,经过调整(但完全独立),并拥有自己的接口。

安装

通过 Composer

composer require tungnt/laravel-repository --dev

或在您的 composer.json 的 require-dev 部分添加以下内容并运行 composer update

"require-dev": {
    "tungnt/laravel-repository": "^1.0.4"
}

发布包配置

php artisan vendor:publish --provider="Tungnt\LaravelRepository\RepositoryServiceProvider" --tag="tungnt/config" --tag="tungnt/Repositories"

要更改默认命名空间 [config/repository.php]

<?php
return [
    'repository-namespace' => 'App', // Your Desire Namespace for Repository Classes
    'service-namespace' => 'App', // Your Desire Namespace for Service Classes
]

基本用法

创建仓库类。

php artisan make:repository your-repository-name

示例

php artisan make:repository UserRepository

php artisan make:repository User

在目录中创建仓库类。

php artisan make:repository folder/your-repository-name

示例

php artisan make:repository User/UserRepository

php artisan make:repository User/User

以上将在 App 目录内创建一个 Repositories 目录。

使用接口创建仓库。

php artisan make:repository UserRepository -i

php artisan make:repository User/UserRepository -i

这里需要额外添加 -i 标志。以上将在 App 目录内创建一个 Repositories 目录。

使用模型创建仓库。

php artisan make:repository UserRepository -m

php artisan make:repository User/UserRepository -m

这里需要额外添加 -m 标志。

或者您也可以使用模型和接口创建仓库

php artisan make:repository User/UserRepository -mi

创建仓库资源。

php artisan make:repository UserRepository --resource

创建的仓库类的示例

文件仓库

<?php

namespace App\Repositories;

use App\Repositories\BaseRepository;
use App\Repositories\Interfaces\UserRepositoryInterface;

class UserRepository extends BaseRepository implements UserRepositoryInterface
{
    public function getModel()
    {
        return \App\Models\User::class;
    }

    public function getUser()
    {
        return [];
    }
}

文件接口

<?php

namespace App\Repositories\Interfaces;

use App\Repositories\Interfaces\RepositoryInterface;

interface UserRepositoryInterface extends RepositoryInterface
{
    public function getUser();
}

文件控制器

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Repositories\Interfaces\UserRepositoryInterface;

class UserController extends Controller
{
    /**
     * @var UserRepositoryInterface|\App\Repositories\Repository
     */
    protected $userRepo;

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


    /**
    * Display a listing of the resource.
    *
    * @return \Illuminate\Http\Response
    */
    public function index()
    {
        $user = $this->userRepo->getAll();

        return view('', ['user' => $user]);
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        //
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        $data = $request->all();

        //... Validation here

        $user = $this->userRepo->create($data);

        return redirect()->route('');
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        $user = $this->userRepo->find($id);

        return view('', ['user' => $user]);
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        $data = $request->all();

        //... Validation here

        $user = $this->userRepo->update($id, $data);

        return redirect()->route('');
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        $this->userRepo->delete($id);
        
        return redirect()->route('');
    }
}

创建服务

您可以使用 artisan cli 创建新的 Service 类

php artisan make:service your-service

php artisan make:service your-service -i

许可证

MIT 许可证 (MIT)。请参阅 许可证 了解更多信息。