Looking to hire Laravel developers? Try LaraJobs

laravel-messages maintained by centrex

Description
Manage messages in laravel
Author
Last update
2026/04/18 14:07 (dev-main)
License
Downloads
391

Comments
comments powered by Disqus

Manage messages in Laravel

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

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.