Databázová schéma
Každé prepojenie je jeden riadok v jedinej polymorfnej tabuľke — predvolene connections, premenovať ju môžete kľúčom table. Publikovaná migrácia v skrátenej podobe:
Schema::create('connections', function (Blueprint $table) use ($keyType): void {
$table->id();
$table->morphKey('connector', $keyType, nullable: false);
$table->morphKey('connectable', $keyType, nullable: false);
$table->jsonb('permissions');
$table->string('status')->default('accepted')->index();
$table->jsonb('meta')->nullable();
$table->timestamp('expires_at')->nullable();
$table->timestamps();
$table->softDeletes();
$table->unique(
['connector_type', 'connector_id', 'connectable_type', 'connectable_id'],
'connections_morph_unique',
);
});| Stĺpec | Typ | Poznámka |
|---|---|---|
id | bigint | Primárny kľúč. |
connector_type / connector_id | morph kľúč | Strana, ktorá prepojenie vytvorila. id sa riadi podľa key_type. |
connectable_type / connectable_id | morph kľúč | Strana, na ktorú prepojenie smeruje. id sa riadi podľa key_type. |
permissions | jsonb | Reťazce oprávnení; cast na Collection. |
status | string, indexovaný | pending, accepted alebo blocked; predvolene accepted. Cast na ConnectionStatus. |
meta | jsonb, nullable | Voľné metadáta; cast na pole. |
expires_at | timestamp, nullable | Null znamená, že prepojenie nikdy nevyprší. |
created_at / updated_at | timestamps | Štandardné časové značky Eloquentu. |
deleted_at | soft deletes | Nastavuje ho disconnect(), odpojenie pri sync a connections:prune; po oživení či obnove dvojice sa znova vymaže. |
Kľúče UUID a ULID
Oba morph stĺpce id sa riadia podľa key_type — bigint (predvolené), uuid alebo ulid. Nastavte ho pred publikovaním a spustením migrácie: po vytvorení tabuľky je nemenný a predvolený bigint vytvorí presne tie isté stĺpce ako morphs() v Laraveli.
# .env — set before publishing and running the migration
CONNECTIONS_KEY_TYPE=ulid
php artisan vendor:publish --tag="connections-migrations"
php artisan migrateJeden riadok na dvojicu
Index connections_morph_unique pokrýva connector_type, connector_id, connectable_type a connectable_id — vrátane soft-deleted riadkov. Opätovné prepojenie tej istej dvojice aktualizuje existujúci riadok namiesto pridania druhého a odpojená či uprataná dvojica sa oživí na mieste — connect() ju začne nanovo, reconnect() ju obnoví v pôvodnej podobe (pozrite Prepínanie a obnova).
permissions a meta sú stĺpce jsonb. Na PostgreSQL sa tak dajú porovnávať a indexovať; na MySQL a SQLite ich schema builder skompiluje na rovnaký typ ako json.
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.