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

Databázová schéma a typy kľúčov

Balík používa jedinú tabuľku. Jej názov určuje konfiguračný kľúč table:

StĺpecTypPoznámka
idbigintAutoinkrementálny primárny kľúč bez ohľadu na key_type.
reporter_type / reporter_idnullable morphNahlasovateľ — null pri hlásení hosťa a anonymnom hlásení.
reported_type / reported_idnullable morphNahlásený subjekt.
resolved_by_type / resolved_by_idnullable morphModerátor, ktorý hlásenie vybavil — null pri systémových akciách.
statusstring, indexovanýHodnota stavu, predvolene pending.
reasonstring, indexovanýSlug dôvodu.
descriptiontext, nullablePopis od nahlasovateľa.
resolution_notetext, nullablePoznámka moderátora.
guest_identifierstring, nullable, indexovanýHašovaná IP adresa alebo e-mail na deduplikáciu hlásení hostí.
resolved_attimestamp, nullableKedy bolo hlásenie vyriešené alebo zamietnuté.
created_at / updated_attimestampsŠtandardné časové značky Eloquentu.
deleted_attimestamp, nullableSoft delete.

Dva zložené indexy obsluhujú najčastejšie dotazy: (reported_type, reported_id, status) pre agregácie a kontrolu prahu a deduplikačný index nad (reported_type, reported_id, reporter_type, reporter_id) s názvom <table>_dedupe_index.

Typ morph kľúča

key_type určuje typ id stĺpca všetkých troch morph dvojíc — reporter, reported a resolved_by. Vlastný primárny kľúč tabuľky je vždy autoinkrementálny bigint:

key_typeMorph id stĺpcePoužite, ak vaše modely majú
bigintbigintAutoinkrementálne celočíselné kľúče (predvolené).
uuiduuidUUID primárne kľúče (HasUuids).
ulidchar(26)ULID primárne kľúče (HasUlids).

Pri hodnote uuid alebo ulid musia modely nahlasovateľov, nahlásených subjektov aj moderátorov používať reťazcové primárne kľúče. Nastavte ju pred migráciou — určuje typy stĺpcov:

REPORTS_KEY_TYPE=uuid
use Illuminate\Database\Eloquent\Concerns\HasUuids;
use Illuminate\Database\Eloquent\Model;
use RoundlyConsulting\Reports\Traits\GivesReports;

class User extends Model
{
    use GivesReports;
    use HasUuids;   // string primary key to match key_type = uuid
}

Nenastavený alebo prázdny kľúč znamená bigint; neznáma hodnota pri spustení migrácie vyhodí InvalidConfigurationException z toolkitu, namiesto toho, aby potichu vytvorila stĺpce bigint.

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.