bruhanda / laravel-ticket
Laravel 11 门票系统,帮助您轻松管理门票
Requires
- php: ^8.1
- illuminate/contracts: ^9.0|^10.0|^11.0
- spatie/laravel-package-tools: ^1.13.0
Requires (Dev)
- laravel/pint: ^1.0
- nunomaduro/collision: ^6.0|^7.0|^8.0
- nunomaduro/larastan: ^2.0.1
- orchestra/testbench: ^7.0|^8.0|^9.0
- pestphp/pest: ^1.21
- pestphp/pest-plugin-laravel: ^1.1
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
- phpunit/phpunit: ^9.5|^10.0|^11.0
README
简介
Laravel Ticket 包,是一个后端 API,以简单的方式处理您的门票系统。
安装
您可以通过 composer 安装此包
composer require coderflex/laravel-ticket
配置
您可以使用以下命令发布配置文件
php artisan vendor:publish --tag="ticket-config"
您可以使用以下命令发布并运行迁移
php artisan vendor:publish --tag="ticket-migrations"
在运行迁移之前,您可能需要发布配置文件,并确保当前表不会与现有应用程序冲突。一旦您对迁移表满意,您可以运行
php artisan migrate
准备你的模型
将 HasTickets
特性添加到您的 User
模型中,同时添加 CanUseTickets
接口
... use Coderflex\LaravelTicket\Concerns\HasTickets; use Coderflex\LaravelTicket\Contracts\CanUseTickets; ... class User extends Model implements CanUseTickets { ... use HasTickets; ... }
使用
此包的基本用法是创建一个 ticket
,然后将 labels
和 categories
关联到它。
您可以将尽可能多的 categories
/labels
关联到单个门票。
以下是一个示例
use Coderflex\LaravelTicket\Models\Ticket; use Coderflex\LaravelTicket\Models\Category; use Coderflex\LaravelTicket\Models\Label; ... public function store(Request $request) { /** @var User */ $user = Auth::user(); $ticket = $user->tickets() ->create($request->validated()); $category = Category::first(); $label = Label::first(); $ticket->attachCategories($category); $ticket->attachLabels($label); // or you can create the categories & the tickets directly by: // $ticket->categories()->create(...); // $ticket->labels()->create(...); return redirect(route('tickets.show', $ticket->uuid)) ->with('success', __('Your Ticket Was created successfully.')); } public function createLabel() { // If you create a label seperated from the ticket and wants to // associate it to a ticket, you may do the following. $label = Label::create(...); $label->tickets()->attach($ticket); // or maybe $label->tickets()->detach($ticket); } public function createCategory() { // If you create a category/categories seperated from the ticket and wants to // associate it to a ticket, you may do the following. $category = Category::create(...); $category->tickets()->attach($ticket); // or maybe $category->tickets()->detach($ticket); } ...
门票表结构
消息表结构
标签表结构
类别表结构
API 方法
门票 API 方法
此 ticket
模型包含一些方便的方法,可让您快速构建,以下为可用的 API 列表
链式 列显示方法的状态,即是否可以链式调用,例如
$ticket->archive() ->close() ->markAsResolved();
门票关联 API 方法
ticket
模型还有一些方法用于与其他相关模型交互
attachCategories
和syncCategories
方法是attach
和sync
laravel 方法的替代方案。如果您想了解更多信息,请查看此 链接
commentAsUser
接受一个用户作为第一个参数,如果为 null,则默认使用 认证 用户。
门票作用域
ticket
模型还有一些作用域,可开始过滤。
类别 & 标签作用域
处理文件上传
此包(暂时)不包含文件上传功能。相反,您可以使用 laravel-medialibrary(由 Spatie 提供)来处理文件功能。
步骤非常直接,您需要做的只是以下操作。
通过在应用程序中创建新的模型文件来扩展 Ticket
模型
php artisan make:model Ticket
然后扩展基本 Ticket Model
,然后使用 spatie 包中的 InteractWithMedia
特性和 HasMedia
接口
namespace App\Models\Ticket; use Spatie\MediaLibrary\HasMedia; use Spatie\MediaLibrary\InteractsWithMedia; class Ticket extends \Coderflex\LaravelTicket\Models\Ticket implements HasMedia { use InteractsWithMedia; }
其余的实现,请参阅 spatie 包的 文档 了解更多信息。
测试
composer test
变更日志
有关最近更改的更多信息,请参阅 变更日志。
贡献
请参阅贡献指南以获取详细信息。
安全漏洞
请审查我们的安全策略,了解如何报告安全漏洞。
致谢
许可证
MIT许可(MIT)。请参阅许可文件以获取更多信息。