---
title: "Príprava modelov — Messages for Laravel | Roundly"
description: "Implementujte ParticipatesInMessaging a pridajte HasMessaging každému modelu, ktorý posiela správy alebo sa zúčastňuje vlákien."
url: https://roundly-consulting.com/sk/open-source/navody/messages-for-laravel/priprava-modelov
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)

# Príprava modelov

Každý model, ktorý sa zapája do správ — odosielateľ alebo účastník — musí implementovať RoundlyConsulting\\Messages\\Interfaces\\ParticipatesInMessaging. Trait HasMessaging pridá pohodlné API:

```php
use Illuminate\Database\Eloquent\Model;
use RoundlyConsulting\Messages\Concerns\HasMessaging;
use RoundlyConsulting\Messages\Interfaces\ParticipatesInMessaging;

class User extends Model implements ParticipatesInMessaging
{
    use HasMessaging;

    public function participateAs(): array
    {
        return [
            'id' => $this->id,
            'name' => $this->name,
        ];
    }
}
```

## Na čo slúži participateAs()

participateAs() vracia verejnú podobu účastníka. Uveďte v nej len údaje, ktoré môžu vidieť ostatní v konverzácii:

- Broadcast payloady — odosielateľ správy, účastník pri pridaní/prečítaní/odchode a pisateľ pri signáli písania.
- JSON resources — MessageResource.sender a ParticipantResource.participant, cez predvolený resource účastníka. Model bez rozhrania sa v nich vykreslí ako svoj kľúč a názov triedy bez menného priestoru ({"id": 12, "type": "Restaurant"}) — pozrite API resources.
- Systémové správy — pri pridaní a odchode sa ukladá do meta.participant a zobrazí sa z neho kľúč name.

Broadcasting modelu, ktorý rozhranie neimplementuje, vyhodí ParticipationException::interfaceImplementationRequired().

## Zúčastniť sa môže akýkoľvek model

Účasť je polymorfná, takže rôzne typy modelov — User a Company, zákazník a tím podpory — môžu zdieľať jednu konverzáciu:

```php
use Illuminate\Database\Eloquent\Model;
use RoundlyConsulting\Messages\Concerns\HasMessaging;
use RoundlyConsulting\Messages\Interfaces\ParticipatesInMessaging;

class Company extends Model implements ParticipatesInMessaging
{
    use HasMessaging;

    public function participateAs(): array
    {
        return ['id' => $this->id, 'name' => $this->name];
    }
}

// A User and a Company share one conversation
$thread = $customer->startConversationWith($company, name: 'Order A-1042');
$company->sendMessageTo($thread, 'Your order ships tomorrow.');
```

Zdieľajú stĺpce sender\_id a participant\_id, preto musia všetky zúčastnené modely používať rovnaký typ primárneho kľúča — nastavte podľa neho key\_type (pozri Typy kľúčov).

## API traitu HasMessaging

Všetko, čo trait pridáva, na jednom mieste. Je to skratka nad tým istým MessagesManager, ktorý používa fasáda Messages — každý zápis teda spustí tú istú akciu a Messages::fake() ho zaznamená rovnako ako volanie fasády:

```php
$user->participations();                          // MorphMany<Participant>
$user->threads();                                 // Collection<Thread>, newest activity first
$user->conversations();                           // alias of threads()
$user->startConversationWith([$bob], name: 'Q3'); // Thread — $user becomes the owner
$user->conversationWith($bob);                    // Thread — find-or-create the DM
$user->sendMessageTo($thread, 'Hello');           // Message
$user->joinThread($thread);                       // Participant — self-join, only on threads open to everyone
$user->unreadThreads();                           // Collection<Thread> with unread messages
$user->unreadCount();                             // int — across every thread
$user->unreadCount($thread);                      // int — within one thread
$user->markThreadRead($thread);                   // Participant
```

## 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)
