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ĺpec | Typ | Poznámka |
|---|---|---|
id | bigint | Autoinkrementálny primárny kľúč bez ohľadu na key_type. |
reporter_type / reporter_id | nullable morph | Nahlasovateľ — null pri hlásení hosťa a anonymnom hlásení. |
reported_type / reported_id | nullable morph | Nahlásený subjekt. |
resolved_by_type / resolved_by_id | nullable morph | Moderátor, ktorý hlásenie vybavil — null pri systémových akciách. |
status | string, indexovaný | Hodnota stavu, predvolene pending. |
reason | string, indexovaný | Slug dôvodu. |
description | text, nullable | Popis od nahlasovateľa. |
resolution_note | text, nullable | Poznámka moderátora. |
guest_identifier | string, nullable, indexovaný | Hašovaná IP adresa alebo e-mail na deduplikáciu hlásení hostí. |
resolved_at | timestamp, nullable | Kedy bolo hlásenie vyriešené alebo zamietnuté. |
created_at / updated_at | timestamps | Štandardné časové značky Eloquentu. |
deleted_at | timestamp, nullable | Soft 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_type | Morph id stĺpce | Použite, ak vaše modely majú |
|---|---|---|
bigint | bigint | Autoinkrementálne celočíselné kľúče (predvolené). |
uuid | uuid | UUID primárne kľúče (HasUuids). |
ulid | char(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=uuiduse 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 kryptomienOdoslaní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.