Models
Wirechat uses Eloquent models for conversations, participants, messages, groups, attachments, actions, invites, join requests, message requests, settings, and the application user model that participates in chats.
These models are configurable so your application can extend them with app-specific relationships, scopes, observers, casts, accessors, or helper methods while keeping Wirechat's default behavior.
Your application's authenticated user model is registered with models.user. It still integrates with Wirechat by implementing WirechatUser and using InteractsWithWirechat. See Quick Start and Users for user-model integration.
Model Setup
Wirechat resolves its package models and default searchable user model from the models array in config/wirechat.php:
use App\Models\User;
use Wirechat\Wirechat\Models\Action;
use Wirechat\Wirechat\Models\Attachment;
use Wirechat\Wirechat\Models\Conversation;
use Wirechat\Wirechat\Models\Group;
use Wirechat\Wirechat\Models\Invite;
use Wirechat\Wirechat\Models\JoinRequest;
use Wirechat\Wirechat\Models\Message;
use Wirechat\Wirechat\Models\MessageRequest;
use Wirechat\Wirechat\Models\Participant;
use Wirechat\Wirechat\Models\Setting;
'models' => [
'user' => User::class,
'action' => Action::class,
'attachment' => Attachment::class,
'conversation' => Conversation::class,
'group' => Group::class,
'invite' => Invite::class,
'join_request' => JoinRequest::class,
'message' => Message::class,
'message_request' => MessageRequest::class,
'participant' => Participant::class,
'setting' => Setting::class,
],
The user entry points to the application model that implements WirechatUser. Each Wirechat-owned model entry must extend the matching Wirechat base model. This keeps package relationships, casts, scopes, cleanup hooks, jobs, and UI flows compatible.
Custom Model Classes
Create a custom model when you want to add application behavior to a Wirechat record:
namespace App\Models;
use Wirechat\Wirechat\Models\Conversation as BaseConversation;
class WirechatConversation extends BaseConversation
{
public function supportTicket()
{
return $this->belongsTo(SupportTicket::class);
}
}
Then register the subclass:
'models' => [
'conversation' => \App\Models\WirechatConversation::class,
],
Model Reference
Use the model pages when you need fields, relationships, helpers, query helpers, or safe customization notes: