---
title: "Agregácia a dotazy — Reports for Laravel | Roundly"
description: "Počítajte hlásenia na subjekt, overte, kto čo nahlásil, a zoraďte či filtrujte subjekty podľa počtu hlásení pripravenými scopes."
url: https://roundly-consulting.com/sk/open-source/navody/reports-for-laravel/agregacia-a-dotazy
language: sk
---

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

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

# Agregácia a dotazy

HasReports pridá každému nahlásiteľnému modelu pomocníkov na počítanie a vyhľadávanie:

```php
use RoundlyConsulting\Reports\Enums\Status;

$post->reportsCount();                 // total
$post->reportsCount(Status::Pending);  // a specific status
$post->hasBeenReported();
$post->isReportedBy($user);
$post->pendingReports;                 // open reports relation
```

## Query scopes

```php
Post::query()->withReportCounts()->get();                    // eager reports_count
Post::query()->mostReported()->get();                        // by total report count
Post::query()->mostReported(Status::Pending)->get();         // count only pending
Post::query()->reportedMoreThan(5)->get();                   // more than 5 reports
Post::query()->reportedMoreThan(5, Status::Pending)->get();  // more than 5 pending
```

- withReportCounts() — dočíta reports\_count.
- mostReported(?Status) — pridá reports\_count a zoradí podľa neho zostupne; so stavom počíta len hlásenia v danom stave.
- reportedMoreThan(int, ?Status) — subjekty s väčším počtom hlásení, než je zadané číslo, voliteľne v rámci jedného stavu; reports\_count je súčasťou výsledku.

reportedMoreThan() filtruje cez whereHas, nie cez HAVING nad aliasom počtu, takže funguje na PostgreSQL a MySQL rovnako ako na SQLite.

## Priame dotazy na hlásenia

Model Report má vlastné scopes — withStatus, withReason, pending, resolved, rejected a open — pre fronty moderácie a dashboardy:

```php
use RoundlyConsulting\Reports\Enums\Status;
use RoundlyConsulting\Reports\Models\Report;

// A moderation queue: every open report, newest first.
Report::query()->open()->with(['reporter', 'reported'])->latest()->paginate(25);

Report::query()->withStatus(Status::InReview)->get();
Report::query()->withReason('harassment')->get();
Report::query()->pending()->count();
Report::query()->resolved()->get();
Report::query()->rejected()->get();
```

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