coderflex / laravel-ticket
Laravel Ticket系统,帮助您轻松管理您的票据
Requires
- php: ^8.1
- illuminate/contracts: ^9.0|^10.0
- spatie/laravel-package-tools: ^1.13.0
Requires (Dev)
- laravel/pint: ^1.0
- nunomaduro/collision: ^6.0|^7.0
- nunomaduro/larastan: ^2.0.1
- orchestra/testbench: ^7.0|^8.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
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
模型还有一系列作用域,以开始过滤。
类别与标签作用域
处理文件上传
此包目前没有文件上传功能,您可以使用 Spatie 的 laravel-medialibrary 来处理文件功能。
步骤非常简单,您需要做的以下。
通过在应用程序中创建新的模型文件来扩展 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)。请参阅许可文件获取更多信息。