Databázová schéma a typy kľúčov
Balík používa dve tabuľky. V reviews sú recenzie aj odpovede vlastníka:
| Stĺpec | Typ | Poznámka |
|---|---|---|
id | bigint | Autoinkrementálny primárny kľúč. |
parent_id | bigint, nullable | Cudzí kľúč na reviews (pri zmazaní null) — nastavený pri odpovediach vlastníka. |
reviewable_type / reviewable_id | morph, nullable | Predmet recenzie; typ id určuje key_type. |
author_type / author_id | morph, nullable | Autor; typ id určuje key_type. |
rating | unsigned tinyint, nullable, index | null = recenzia len s textom alebo odpoveď. |
status | string, index | pending, approved alebo rejected; predvolene pending. |
verified | boolean, index | Overený nákup / recenzent; predvolene false. |
title | string, nullable | Voliteľný nadpis. |
content | text, nullable | Voliteľný text — recenzia len s hviezdičkami ho nemá. |
meta | jsonb, nullable | Ľubovoľné metadáta ako Collection; obsahuje rejection_reason. |
helpful_count / unhelpful_count | unsigned int | Denormalizované počty hlasov; predvolene 0. |
approved_at | timestamp, nullable | Nastaví sa pri schválení, vymaže pri zamietnutí. |
created_at / updated_at / deleted_at | timestamps | Recenzie sa mažú mäkko (soft delete). |
Zložený index (reviewable_type, reviewable_id, status) obsluhuje agregačné dopyty pre jeden predmet. Stĺpec rating je unsigned tiny integer, preto max_rating nenastavujte nad 255.
review_votes
- review_id — cudzí kľúč na tabuľku nakonfigurovaného modelu recenzie, pri zmazaní sa kaskáduje.
- voter_type / voter_id — polymorfný hlasujúci, typ určuje key_type.
- helpful — true pre užitočný, false pre neužitočný hlas.
- Unikátny index (review_id, voter_type, voter_id): jeden hlas od hlasujúceho na recenziu.
Typy kľúčov
Autori, predmety a hlasujúci sú polymorfní, zapojiť sa teda môže akýkoľvek Eloquent model. key_type určuje typ ich stĺpcov id; vlastné tabuľky balíka majú vždy autoinkrementálne kľúče:
| key_type | Použite, keď vaši autori, predmety a hlasujúci… |
|---|---|
bigint | používajú predvolené autoinkrementálne kľúče Laravelu (predvolené) |
uuid | používajú HasUuids |
ulid | používajú HasUlids |
Všetky vaše polymorfné ciele musia mať rovnaký typ kľúča. Nastavte ho pred spustením migrácií — číta sa práve vtedy:
# Set before you run the migrations — the morph columns are typed from it
REVIEWS_KEY_TYPE=uuidIná hodnota vyhodí InvalidConfigurationException, namiesto aby sa potichu migrovalo ako 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.