Databázová schéma a typy kľúčov
Všetky kontakty všetkých vlastníkov ukladá jedna polymorfná tabuľka. Jej názov pochádza z contacts.table:
| Stĺpec | Typ | Účel |
|---|---|---|
id | bigint | Autoinkrementálny kľúč. |
owner_type / owner_id | nullable morph | Polymorfný vlastník; owner_id sa riadi key_type. Null pri kontaktoch bez vlastníka. |
type | string, default custom, indexed | Surový druh — vstavaná hodnota alebo registrovaný vlastný druh. |
name | string | Zobrazované meno ('' ak nie je nastavené). |
value | nullable string | Normalizovaná hodnota kontaktu, najviac 255 znakov. |
label | nullable string | Voľný popis, napr. Work. |
category | nullable string, indexed | Zoskupenie, napr. Suppliers. |
is_primary | boolean, default false | Primárny v rámci vlastníka a druhu. |
position | unsigned int, default 0 | Poradie v rámci druhu. |
verified_at | nullable timestamp | Kedy bol kontakt overený. |
verification_token | nullable string | Hash čakajúceho tokenu — skrytý v poliach aj JSON. |
verification_expires_at | nullable timestamp | Expirácia tokenu. |
verification_attempts | unsigned smallint, default 0 | Nesprávne pokusy minuté na čakajúci token; nový token ich vynuluje. |
meta | nullable jsonb | Ľubovoľné metadáta, castované na Collection. |
created_at / updated_at | timestamps | Štandardné časové pečiatky. |
deleted_at | soft deletes | Zmazané kontakty zostanú dostupné. |
Najčastejšie dotazy pokrývajú dva zložené indexy: (owner_type, owner_id, type) pre čítanie podľa druhu a (owner_type, owner_id, type, is_primary) pre vyhľadanie primárneho kontaktu.
Typ kľúča vlastníka
Vlastník je voliteľná polymorfná relácia, preto musí owner_id zodpovedať kľúčom vašich modelov. Ak tieto modely používajú HasUuids alebo HasUlids, nastavte key_type na uuid alebo ulid. Hodnota sa číta pri spustení migrácie, takže ju nastavte pred publikovaním a migráciou:
# set before you publish and run the migration
CONTACTS_KEY_TYPE=uuidNenastavená alebo prázdna hodnota sa číta ako bigint, ktorý vytvorí presne tie isté stĺpce ako nullableMorphs() v Laraveli. Akákoľvek iná hodnota vyhodí pri spustení migrácie InvalidConfigurationException, takže preklep nikdy potichu nevytvorí stĺpce bigint pre vlastníkov s UUID či ULID.
Soft delete
Kontakty používajú soft delete, takže zmazaný kontakt zostane dostupný cez withTrashed(). Soft delete spolu s kontaktom presunie do koša aj jeho štruktúrované adresy a hrany vzťahov v oboch smeroch a restore() vráti presne tie — nie tie, ktoré ste predtým zmazali samostatne. Obnovený primárny kontakt sa vráti ako sekundárny, ak medzitým jeho druh povýšil iný kontakt. forceDelete() adresy aj hrany odstráni natrvalo.
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.