---
title: "API resources — Messages for Laravel | Roundly"
description: "Hotové JSON resources pre vlákna, správy a účastníkov — len bezpečné polia vrátane stavu prečítania a údajov o odpovedi."
url: https://roundly-consulting.com/sk/open-source/navody/messages-for-laravel/api-zdroje
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)

# API resources

Pre stavbu API na správy alebo Inertia/SPA backendu sú pripravené JSON resources. Vystavujú len bezpečné polia, zobrazujú stav prečítania a údaje o odpovedi a korektne sa správajú, aj keď vzťahy nie sú prednačítané:

```php
use RoundlyConsulting\Messages\Facades\Messages;
use RoundlyConsulting\Messages\Http\Resources\MessageResource;
use RoundlyConsulting\Messages\Http\Resources\ParticipantResource;
use RoundlyConsulting\Messages\Http\Resources\ThreadResource;

return ThreadResource::collection(Messages::inboxFor($request->user()));
return MessageResource::collection(Messages::thread($thread)->messages());
```

## Polia

| Resource | Polia |
| --- | --- |
| `ThreadResource` | id, name, is\_direct, is\_public, is\_archived, last\_activity\_at, unread\_count (ak je k dispozícii, napr. zo schránky), latest\_message a participants (ak sú načítané). |
| `MessageResource` | id, thread\_id, type, body (po zrušení odoslania null), preview, is\_deleted, sender (ak je načítaný, cez resources.participant; pri systémovej správe či zmazanom odosielateľovi null), reply\_to (id, excerpt, sender\_id, sender\_type; excerpt je snímka preview() rodičovskej správy, sender\_type názov triedy citovaného odosielateľa bez menného priestoru), sent\_at, edited\_at (len textové správy, z meta.edited\_at — null, ak sa text naozaj neupravil). |
| `ParticipantResource` | id, role, read\_at, joined\_at, participant (ak je načítaný, cez resources.participant; null, ak model už neexistuje). |
| `MessageParticipantResource` | Predvolená hodnota resources.participant: participateAs() modelu, ak implementuje ParticipatesInMessaging, inak id + type, kde type je názov triedy bez menného priestoru (User, nikdy App\\Models\\User). |

ThreadResource spojte s Messages::inboxFor() — schránka už prednačíta všetko, čo resource číta, vrátane unread\_count. Oba stránkovače sa riadia parametrom ?page= z požiadavky, takže meta.current\_page aj links.next v obálke zostávajú zosúladené pre klienta s nekonečným posúvaním.

Žiadny resource neobsahuje názov PHP triedy. MessageResource sa vykreslí takto:

```json
{
  "id": 7, "thread_id": 1, "type": "text", "body": "On it", "preview": "On it", "is_deleted": false,
  "sender": {"id": 4, "name": "Bob"},
  "reply_to": {"id": 6, "excerpt": "First", "sender_id": 3, "sender_type": "User"},
  "sent_at": "2026-10-18T09:30:00+00:00",
  "edited_at": null
}
```

## Účastníci a odosielatelia

participant a sender sa vykresľujú cez triedu v resources.participant, predvolene MessageParticipantResource: ak model implementuje ParticipatesInMessaging, je to jeho participateAs() ({"id": 4, "name": "Bob"} vyššie), inak jeho kľúč a názov triedy bez menného priestoru — {"id": 12, "type": "Restaurant"}, nikdy App\\Models\\Restaurant. Ak vaše API potrebuje viac, nasmerujte kľúč na vlastný JsonResource — dostane model účastníka:

```php
// config/messages.php
'resources' => [
    'participant' => App\Http\Resources\ChatMemberResource::class,
],

// app/Http/Resources/ChatMemberResource.php
final class ChatMemberResource extends JsonResource
{
    public function toArray(Request $request): array
    {
        return [
            'id' => $this->resource->getKey(),
            'type' => class_basename($this->resource),
            'name' => $this->resource->name,
            'avatar_url' => $this->resource->avatar_url,
        ];
    }
}
```

MessageParticipantResource::configured() zostaví nakonfigurovaný resource okolo modelu, alebo vráti null, ak model chýba. Cez túto metódu vykresľujú resources balíka aj publikované kópie, takže jedna výmena platí pre oboje:

```php
use RoundlyConsulting\Messages\Http\Resources\MessageParticipantResource;

MessageParticipantResource::configured($message->sender)?->resolve($request); // null for none
```

## Prispôsobenie

Publikujte upraviteľné kópie — ThreadResource, MessageResource a ParticipantResource v App\\Http\\Resources\\Messages (app/Http/Resources/Messages):

```bash
php artisan vendor:publish --tag="messages-resources"
```

Kým ich neupravíte, vykresľujú presne to isté ako resources balíka; vo svojich controlleroch ich používajte namiesto tried balíka. ThreadResource vykresľuje poslednú správu aj účastníkov tiež cez vaše kópie. Kópia MessageResource publikovaná pred verziou 1.1.0 stále číta edited\_at z updated\_at, takže zrušená či obnovená správa sa v nej javí ako upravená — prekopírujte si do nej editedAt() z MessageResource balíka.

Kópie publikované verziou 1.1.x alebo staršou vracajú pôvodný výstup: morph typ — v aplikácii bez morph mapy celý názov triedy — v participant.type (pri modeli bez ParticipatesInMessaging) aj v reply\_to.sender\_type a null pre takéhoto odosielateľa. Publikujte ich znova s --force, čo prepíše vaše úpravy, alebo si do nich prekopírujte kód pre participant, sender a senderType() z resources balíka.

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