centrex / laravel-messages
Manage messages in laravel
v1.1.0
2025-02-05 06:17 UTC
Requires
- php: ^8.2|^8.3|^8.4
- illuminate/database: ^10.0|^11.0|^12.0
- illuminate/support: ^10.0|^11.0|^12.0
Requires (Dev)
- larastan/larastan: ^2.0
- laravel/pint: ^1.0
- nunomaduro/collision: ^8.5
- orchestra/testbench: ^9.5
- pestphp/pest: ^3.4
- pestphp/pest-plugin-arch: ^3.0
- pestphp/pest-plugin-laravel: ^3.0
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
- rector/rector: ^1.2
- spatie/laravel-ray: ^1.26
This package is auto-updated.
Last update: 2026-04-22 06:44:45 UTC
README
Thread-based polymorphic messaging for any Eloquent model. Supports multi-participant conversations, read/unread tracking, and soft-deletes on both threads and messages.
Installation
composer require centrex/laravel-messages
php artisan vendor:publish --tag="laravel-messages-migrations"
php artisan migrate
Usage
1. Add the trait to your model
use Centrex\Messages\Concerns\HasMessages; class User extends Authenticatable { use HasMessages; }
2. Create a thread and add messages
use Centrex\Messages\Models\Thread; // Create a new thread $thread = Thread::create(['subject' => 'Order inquiry']); // Add participants $thread->addParticipant($user); $thread->addParticipant($support); // or multiple at once $thread->addParticipants([$user, $support, $manager]); // Post a message $thread->addMessage(['body' => 'When will my order ship?'], $user);
3. Read threads and messages
// All threads a user participates in $user->threads; // Threads with unread messages Thread::forModelWithNewMessages($user)->get(); // All threads for a participant Thread::forModel($user)->get(); // Latest message in a thread $thread->getLatestMessage(); // All messages in a thread $thread->messages; // Who started the thread $thread->creator();
4. Unread tracking
// Mark thread as read by user $thread->markAsRead($user); // Check if thread has unread messages for user $thread->isUnread($user); // bool // Count of threads with new messages $user->newMessagesCount(); // IDs of threads with new messages $user->threadsWithNewMessages();
5. Participant management
$thread->hasParticipant($user); // bool $thread->activateAllParticipants(); // restore soft-deleted participants
Testing
composer test # full suite composer test:unit # pest only composer test:types # phpstan composer lint # pint
Changelog
Please see CHANGELOG for more information on what has changed recently.
Credits
License
The MIT License (MIT). Please see License File for more information.