mmstfkc/basic-crud

该结构旨在用于基本的 CRUD 操作。

v1.0.3 2023-06-03 17:32 UTC

This package is auto-updated.

Last update: 2024-09-05 09:11:27 UTC


README

您应运行以下命令来安装项目。

  composer require mmstfkc/basic-crud

复制配置文件

  cp vendor/mmstfkc/basic-crud/src/config/basicCrud.php config

(可选) 如果您希望错误消息显示与包中相同,可以按照以下步骤操作。

转到以下文件并添加命令。

app/Exceptions/Handler.php:56

    protected $dontReport = [
        ...
        BasicCrudException::class
    ];

    public function render($request, Throwable $e): Response|JsonResponse
    {
        [$message, $statusCode, $code, $errors] = $this->getBasicCrudExceptionExceptionFields($e);

        if (App::environment() == 'production') {
            $errors = '';
        }

        return response()->json(
            [
                'status' => false,
                'code' => $code,
                'errors' => $errors,
                'message' => $message,
            ],
            $statusCode
        );
    }

    private function getBasicCrudExceptionExceptionFields(Throwable $exception): array
    {
        $errors = $exception->getMessage();
        $message = Str::snake(class_basename($exception));
        $statusCode = 500;
        $code = 1008;

        switch (get_class($exception)) {
            case BasicCrudException::class:
                $message = 'validation';
                $errors = $exception->getErrors();
                $statusCode = 422;
                $code = 1002;
                break;
        }

        return [
            $message,
            $statusCode,
            $code,
            $errors,
        ];
    }

包的使用

完成包安装后,需要遵循以下步骤

控制器

我们创建一个控制器并扩展 ModelController 类到这些控制器。

⚠️ ModelController 从您自己的目录中的 "App\Http\Controllers\Controller" 扩展。您在那里所做的任何更改都将影响包。⚠️

您的控制器文件示例可能如下。

<?php

namespace App\Http\Controllers\User;

use App\Models\User;
use Mmstfkc\BasicCrud\app\Http\Controllers\ModelController;

class UserController extends ModelController
{
    public function __construct()
    {
        parent::__construct(User::class);
    }
}

路由

要能够对这些端点发出请求,您可以在您的 route/api.php 文件中添加以下命令。

示例 api.php 文件可能如下

<?php

use App\Http\Controllers\User\UserController;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;

Route::group(['prefix' => 'users'], function () {
    Route::get('', [UserController::class, 'modelIndex']);
    Route::get('{id}', [UserController::class, 'modelDetail']);
    Route::post('', [UserController::class, 'modelStore']);
    Route::put('{id}', [UserController::class, 'modelUpdate']);
    Route::delete('{id}', [UserController::class, 'modelDelete']);
});

要编写自己的函数,可以使用以下示例用法

<?php

namespace App\Http\Controllers\User;

use App\Http\Requests\User\MyRequest;
use App\Models\User;

use Mmstfkc\BasicCrud\app\Http\Controllers\ModelController;

class UserController extends ModelController
{
    /**
     *
     */
    public function __construct()
    {
        parent::__construct(User::class);
    }

    /**
     * @param MyRequest $request
     * @return mixed
     */
    public function index(MyRequest $request): mixed
    {
        return $this->repository->index($request->validated());
    }

    /**
     * @param $id
     * @return mixed
     */
    public function detail($id): mixed
    {
        return $this->repository->detail($id);
    }

    /**
     * @param MyRequest $request
     * @return mixed
     */
    public function store(MyRequest $request): mixed
    {
        return $this->repository->store($request->validated());
    }

    /**
     * @param MyRequest $request
     * @param $id
     * @return mixed
     */
    public function update(MyRequest $request, $id): mixed
    {
        return $this->repository->update($request->validated(), $id);
    }

    /**
     * @param $id
     * @return mixed
     */
    public function delete($id): mixed
    {
        return $this->repository->delete($id);
    }
}

您可以在扩展 ModelController 的控制器类中定义自己的函数。
定义函数后,您可以使用适当的 HTTP 方法和 routes/api.php 文件中的路由来访问它。

过滤器

https:///api/users?where[0][id]=1

在这里,“where”是一个用于过滤用户的过滤参数。其中,“where[0][id]=1”指定了过滤条件。因此,这个请求用于检索具有“id”属性等于1的用户。

以下是一些过滤参数的示例

使用这些过滤参数,您可以使请求更易于阅读,并根据特定标准过滤用户。

本项目遵循MIT许可协议。详情请参阅LICENSE.md文件。