---
title: "API resources — Comments for Laravel | Roundly"
description: "Vracajte komentáre ako JSON cez CommentResource — vnorené odpovede, autor a stav, po načítaní aj páčiky a prílohy."
url: https://roundly-consulting.com/sk/open-source/navody/comments-for-laravel/api-zdroje
language: sk
---

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

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

# API resources

Hotový JSON výstup pre SPA a mobilné backendy:

```php
use RoundlyConsulting\Comments\Http\Resources\CommentResource;

return CommentResource::collection(
    $post->threadedComments()->with(['actor', 'likes', 'media'])->get(),
);
```

| Pole | Obsah |
| --- | --- |
| `id` | ID komentára. |
| `body` | Telo komentára. |
| `status` | pending, approved alebo hidden. |
| `visible` | Príznak viditeľnosti. |
| `parent_id` | ID rodičovského komentára alebo null. |
| `locked` | Či má komentár nastavený vlastný zámok vlákna. |
| `author` | { id, type } autora cez comments.resources.author — type je krátky názov triedy (User); null, ak bol autor zmazaný — len pri načítanom vzťahu actor. |
| `likes` | { count, viewer\_state, breakdown } — len pri načítanom vzťahu likes. |
| `attachments` | \[{ id, url }\] (UUID média + URL, pri súkromných prílohách podpísaná) — len pri načítanom vzťahu media. |
| `replies` | Vnorené položky CommentResource — len pri načítaných replies. |
| `created_at / updated_at` | Časové značky v ISO 8601. |

threadedComments() je verejné vlákno, takže JSON obsahuje len viditeľné a schválené komentáre najvyššej úrovne a odpovede. Resource vykreslí čokoľvek, čo dostane — kľúč replies je akýkoľvek načítaný vzťah replies — preto mu na verejných endpointoch odovzdávajte verejné query: threadedComments() alebo CommentQuery s visible() a withReplies().

Payload likes sa vykresľuje bez diváka, takže viewer\_state je stav hosťa — údaje pre konkrétneho diváka získate cez withLikedState($viewer) v query alebo likeState($viewer). URL príloh sa určujú podľa viditeľnosti každej prílohy — pri súkromných sú podpísané a krátkodobé.

Resource nevracia meta, pretože metaúdaje často obsahujú interné príznaky. CommentResource je final — ak chcete meta zobraziť, vykresľujte komentáre cez vlastný resource.

Komentár s načítanými vzťahmi actor a replies sa vykreslí takto:

```json
{
  "id": 7,
  "body": "Great post!",
  "status": "approved",
  "visible": true,
  "parent_id": null,
  "locked": false,
  "author": { "id": 42, "type": "User" },
  "replies": [],
  "created_at": "2026-10-18T09:30:00+00:00",
  "updated_at": "2026-10-18T09:30:00+00:00"
}
```

author sa vykreslí cez CommentAuthorResource: kľúč a krátky názov triedy, nikdy nie uložený actor\_type — bez morph mapy je to celý názov triedy (App\\Models\\User) a žiadny názov PHP triedy sa ku klientovi API nedostane. type je krátky názov triedy s morph mapou aj bez nej; alias ako member sa nevykreslí ani vtedy.

## Vlastný tvar autora

Nastavte comments.resources.author na vlastného potomka JsonResource. Dostane model autora (actor) pri komentároch najvyššej úrovne aj pri vnorených odpovediach — pre autorov odpovedí načítajte replies.actor:

```php
// config/comments.php
'resources' => [
    'author' => App\Http\Resources\AuthorResource::class,
],

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

Ak komentáre píše viac typov modelov, rozlíšte ich vo vlastnom resource. Prázdna hodnota alebo null znamená pribalený CommentAuthorResource; čokoľvek, čo nie je inštanciovateľný potomok JsonResource, vyhodí InvalidConfigurationException s názvom kľúča.

## Kolekcie a stránkovanie

CommentCollection zbiera CommentResource a funguje aj so stránkovaným výsledkom:

```php
use RoundlyConsulting\Comments\Facades\Comments;
use RoundlyConsulting\Comments\Http\Resources\CommentCollection;

return new CommentCollection(
    Comments::for($post)->visible()->rootsOnly()->withReplies()->paginate(20),
);
```

## 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/comments-for-laravel.md)
