NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky
Reports for Laravel

Príprava modelov

Trait GivesReports pridajte modelom, ktoré podávajú hlásenia, a HasReports modelom, ktoré možno nahlásiť:

use Illuminate\Database\Eloquent\Model;
use RoundlyConsulting\Reports\Contracts\Reportable;
use RoundlyConsulting\Reports\Contracts\Reporter;
use RoundlyConsulting\Reports\Traits\GivesReports;
use RoundlyConsulting\Reports\Traits\HasReports;

class User extends Model implements Reporter
{
    use GivesReports;
}

class Post extends Model implements Reportable
{
    use HasReports;
}

Reporter a Reportable sú prázdne značkovacie rozhrania — implementujte ich, ak chcete typové anotácie; celú prácu robia traity.

Čo pridáva GivesReports

$user->givenReports;                       // every report the user has filed
$user->givenReports()->pending()->count();  // relation + Report scopes

$user->giveReportTo($post);                 // file a report — returns the Report
$user->report($post);                       // a PendingReport with the reporter pre-set
                                            // (both go through the manager, so Reports::fake() records them)
  • givenReports() — MorphMany všetkých hlásení, ktoré model podal.
  • giveReportTo($model, ?$description, ?$reason) — podá hlásenie jedným volaním a vráti Report.
  • report($model) — začne PendingReport s týmto modelom ako nahlasovateľom.

Čo pridáva HasReports

$post->reports;              // every report against the post
$post->pendingReports;       // open reports only — Pending and InReview
$post->reportsCount();       // int
$post->hasBeenReported();    // bool
$post->isReportedBy($user);  // bool
  • reports() a pendingReports() — MorphMany relácie; pendingReports zahŕňa oba otvorené stavy.
  • reportsCount(), hasBeenReported(), isReportedBy() — pomocníci na počítanie a vyhľadávanie.
  • withReportCounts(), mostReported(), reportedMoreThan() — query scopes (pozrite Agregácia a dotazy).

Model, ktorý hlásenia podáva aj prijíma

Používatelia často nahlasujú iných používateľov. Oba traity definujú rovnakú privátnu metódu reportModel(), preto ich PHP na jednej triede nezloží, kým kolíziu nevyriešite. Obe implementácie sú identické, takže môže vyhrať ktorákoľvek:

use Illuminate\Database\Eloquent\Model;
use RoundlyConsulting\Reports\Contracts\Reportable;
use RoundlyConsulting\Reports\Contracts\Reporter;
use RoundlyConsulting\Reports\Traits\GivesReports;
use RoundlyConsulting\Reports\Traits\HasReports;

class User extends Model implements Reporter, Reportable
{
    use GivesReports, HasReports {
        HasReports::reportModel insteadof GivesReports;
    }
}

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

Odoslaním daru súhlasíte s našimi podmienkami prijímania darov.

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.