shamazingg / laravel-ticket
Laravel Ticket 票务系统,帮助您轻松管理您的票务
Requires
- php: ^7.4
This package is auto-updated.
Last update: 2024-09-13 19:55:17 UTC
README
简介
Laravel Ticket 包是一个后端 API,用于处理您的票务系统,操作简便。这是针对 php 7.4 的适配分支。
安装
您可以通过 composer 安装此包
composer require shamazingg/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()); $categories = Category::first(); $labels = Label::first(); $ticket->attachCategories($categories); $ticket->attachLabels($labels); // 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
接受一个用户作为第一个参数,如果为空,则默认使用 已认证 用户。
票务作用域
该 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)。请参阅许可证文件获取更多信息。