---
title: "Modely a dopyty — Messages for Laravel | Roundly"
description: "Modely Thread, Message a Participant — query scopes, vzťahy, pomocníci, stránkované zoznamy a výmena za vlastné podtriedy."
url: https://roundly-consulting.com/sk/open-source/navody/messages-for-laravel/modely-a-dopyty
language: sk
---

[Všetky balíky](https://roundly-consulting.com/sk/open-source.md)

[Messages for Laravel](https://roundly-consulting.com/sk/open-source/navody/messages-for-laravel.md)

# Modely a dopyty

## Query scopes

```php
use RoundlyConsulting\Messages\Models\Message;
use RoundlyConsulting\Messages\Models\Participant;
use RoundlyConsulting\Messages\Models\Thread;

Thread::query()->direct();
Thread::query()->forParticipant($user);
Thread::query()->between($alice, $bob);
Thread::query()->inboxFor($user);
Thread::query()->visibleTo($user);
Message::query()->unreadFor($user);
Participant::query()->unread();            // never marked the thread read
Participant::query()->readUpTo($message);  // read pointer at or past $message
```

- direct() — len priame vlákna.
- forParticipant($model) — vlákna modelu od najnovšej aktivity.
- between($a, $b) — priame vlákno presne týchto dvoch modelov.
- inboxFor($model) — dopyt schránky s prednačítaním a unread\_count.
- visibleTo(?$model) — verejné vlákna a vlákna modelu; pri null len verejné.
- unreadFor($model) — správy, ktoré model neprečítal, okrem vlastných.
- Participant::unread() — účastníci, ktorí svoje vlákno nikdy nečítali.
- Participant::readUpTo($message) — účastníci, ktorých ukazovateľ prečítania je na danej správe alebo za ňou (to používa seenBy()).

## Vzťahy a atribúty

```php
// Thread
$thread->participants;              // HasMany<Participant>
$thread->messages;                  // HasMany<Message>
$thread->latestMessage;             // BelongsTo<Message>, via last_message_id
$thread->notifiableParticipants($sender); // Notifiable participant models, minus the sender
$thread->last_activity_at;          // touched on every send, join and leave

// Message
$message->message;                  // the body column
$message->type;                     // MessageType::Text|System
$message->meta;                     // ?array — quote snapshot, system params, your own keys
$message->thread;                   // BelongsTo<Thread>
$message->sender;                   // MorphTo — null for system messages
$message->parent;                   // BelongsTo<Message> — the quoted message
$message->replies;                  // HasMany<Message>
$message->preview();                // truncated to preview.length, type-aware

// Participant
$participant->participant;          // MorphTo — the User, Company, …
$participant->thread;               // BelongsTo<Thread>
$participant->role;                 // ?ParticipantRole
$participant->last_read_message_id; // the read pointer — the message they had reached
$participant->read_at;              // ?Carbon — when they last read
```

Všetky tri modely používajú soft deletes a sú uložené v messaging\_threads, messaging\_messages a messaging\_participants.

## Výmena modelu

Modely nie sú final — rozšírte ich a príslušný kľúč models.\* nasmerujte na svoju podtriedu:

```php
use RoundlyConsulting\Messages\Models\Message;

class ChatMessage extends Message
{
    // your own casts, relations and methods
}

// config/messages.php
'models' => [
    'message' => App\Models\ChatMessage::class,
    'thread' => RoundlyConsulting\Messages\Models\Thread::class,
    'participant' => RoundlyConsulting\Messages\Models\Participant::class,
],
```

Nakonfigurované triedy sa používajú na každom mieste — vo vzťahoch, akciách, scopes, v manageri aj v príkaze prune. Bez nastavenia alebo pri prázdnej hodnote sa použije model balíka; akákoľvek iná hodnota musí byť týmto modelom alebo jeho podtriedou, inak vyhodí InvalidConfigurationException s názvom kľúča — cudzia trieda sa nikdy potichu nenahradí.

## Stránkované zoznamy

Fasáda stránkuje vlákna aj správy vlákna so správnym prednačítaním a deterministickým poradím:

```php
use RoundlyConsulting\Messages\Facades\Messages;

Messages::threads($user, perPage: 20);              // $user's threads + every public thread
Messages::threads();                                // public threads only
Messages::thread($thread)->messages(perPage: 25);   // newest first, senders eager loaded
```

threads() radí od najnovšej aktivity a prednačíta poslednú správu aj jej odosielateľa; používa scope visibleTo(). Oba predvolene vracajú 15 položiek na stránku a prijímajú page a pageName.

## Prejavte lásku k open source

Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.

[Ďalšie spôsoby podpory vrátane kryptomien](https://roundly-consulting.com/sk/podporte-nas.md)

Odoslaním daru súhlasíte s našimi [podmienkami prijímania darov](https://roundly-consulting.com/sk/podmienky-darov.md).

[Podporte našu open-source prácu (otvorí sa v novej karte)](https://donate.stripe.com/dRmeVe8FX5PF1Qd9pXcEw00) [Pridajte sa k nám na Patreone (otvorí sa v novej karte)](https://www.patreon.com/cw/roundly)

## Chcete to zabudovať do svojho produktu?

Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.

[Ponuka do 48 hodín](https://roundly-consulting.com/sk/kontakt.md) [Prezrieť všetky balíky](https://roundly-consulting.com/sk/open-source/navody/messages-for-laravel.md)
