bhhaskin / laravel-tickets
Ticketing utilities for Laravel applications.
Installs: 1
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/bhhaskin/laravel-tickets
Requires
- php: ^8.1
- illuminate/auth: ^10.0 || ^11.0
- illuminate/database: ^10.0 || ^11.0
- illuminate/support: ^10.0 || ^11.0
Requires (Dev)
- orchestra/testbench: ^8.0 || ^9.0
- pestphp/pest: ^2.0
Suggests
- bhhaskin/laravel-audit: Enable audit trail support for ticket activity
This package is auto-updated.
Last update: 2025-11-04 07:23:28 UTC
README
bhhaskin/laravel-tickets provides a reusable ticketing system for Laravel 10/11 applications with optional Markdown rendering, polymorphic attachments, audit logging, and workspace scoping.
Installation
composer require bhhaskin/laravel-tickets:^0.1.0
Publish config and migrations if you need to customise them:
php artisan vendor:publish --tag=laravel-tickets-config php artisan vendor:publish --tag=laravel-tickets-migrations
Run the package migrations:
php artisan migrate
Features
- SQLite-friendly migrations and Testbench-ready factories.
- Markdown rendering for ticket bodies and replies (via
Str::markdown). - Optional audit trail if
bhhaskin/laravel-auditis installed. - Polymorphic associations (
ticketables) to link any Eloquent model to a ticket. - Optional workspace integration when
bhhaskin/laravel-workspacesis present.
Ticket Model
use Bhhaskin\Tickets\Models\Ticket; $ticket = Ticket::create([ 'user_id' => $user->id, 'subject' => 'DNS outage', 'body' => "We cannot reach example.com from the LA office.", 'priority' => Ticket::PRIORITY_HIGH, ]); // Attach arbitrary models $ticket->attachModel($site); // Optional: assign a workspace if available if (class_exists(\Bhhaskin\LaravelWorkspaces\Support\WorkspaceConfig::class)) { $ticket->assignWorkspace($workspace); } // Replies render markdown automatically $ticket->replies()->create([ 'user_id' => $user->id, 'body' => "Here is **more** context", ]);
Scopes
// Tickets for a specific user $mine = Ticket::forUser($user)->latest()->get(); // Tickets for a workspace (works when laravel-workspaces is installed) $workspaceTickets = Ticket::forWorkspace($workspace)->with(['owner','replies','associations.ticketable'])->paginate();
Optional Packages
- Install
bhhaskin/laravel-auditto automatically log ticket and reply lifecycle events. - Install
bhhaskin/laravel-workspacesto scope tickets by workspace (addsworkspace()relation and resource payload).
Both integrations are auto-detected—no additional configuration is required once the packages are installed.
Testing
composer test
The suite uses Orchestra Testbench with in-memory SQLite and includes stubs for optional integrations so tests pass without extra dependencies.