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的用户。
以下是一些过滤参数的示例
- where 在:检索具有特定属性匹配一个或多个指定值的用户。
例如:https:///api/users?whereIn[0][status]=active,verified 此请求检索具有“status”属性等于“active”或“verified”的用户。 - where 不在:检索具有特定属性不匹配任何指定值的用户。
例如:https:///api/users?whereNotIn[0][role]=admin,superuser 此请求检索“role”属性不等于“admin”或“superuser”的用户。 - where 日期:检索在特定日期出生或具有特定日期属性的用户。
例如:https:///api/users?whereDate[0][birthdate]=2023-01-01 此请求检索“birthdate”属性等于2023-01-01的用户。 - where 时间:检索在特定时间出生或具有特定时间范围的用户。
例如:https:///api/users?whereTime[0][created_at]=15:00:00 此请求检索“created_at”属性等于15:00:00的用户。 - like:检索具有特定属性包含特定文本的用户。
例如:https:///api/users?like[0][name]=John 此请求检索具有“name”属性包含文本“John”的用户。 - ilike:检索具有特定属性包含特定文本(不区分大小写)的用户。
例如:https:///api/users?ilike[0][email]=john 此请求检索“email”属性包含文本“john”,无论大小写。
使用这些过滤参数,您可以使请求更易于阅读,并根据特定标准过滤用户。
本项目遵循MIT许可协议。详情请参阅LICENSE.md文件。