Corepine logo Corepine Wirechat
Login
Wirechat v0.6x latest

Models

Wirechat uses a set of internal Eloquent models for conversations, participants, messages, groups, attachments, actions, invites, join requests, message requests, and settings.

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 configured separately by implementing WirechatUser and using InteractsWithWirechat. See Setup and Users for user-model integration.

Model Setup

Wirechat resolves its package models from the models array in config/wirechat.php:

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' => [
    '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,
],

Each configured class 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: