Zdá sa mi, že to momentálne nepracujem.
Mám 3 tabuľky, záujmy, záujem_užívateľov a používateľov, ktoré medzi sebou majú mnoho vzťahov.
Ak odstránim záujem, chcem sa uistiť, že všetky záznamy v kontingenčnej tabuľke budú tiež vymazané (alebo inak sa chystám naraziť na chyby po riadku, ktoré myslím).
Môže to byť vykonané s $ table-> foreign () natabuľky záujmov (nemyslím si, pretože tu nie je žiadna id odkazovať). V opačnom prípade musím prerušiť všetky vzťahy, keď je záujem odstránený a odstrániť každý pivot?
Myslím, že sa budem stretávať s rovnakým problémom, pokiaľ ide o vzťah jedného k mnohým, ktorý mám
Jedna kategória má mnoho záujmov. Ak odstránim kategóriu, nemyslím si, že môžem mať cudzí kľúč spojený so záujmami na tabuľke kategórií. Musím tiež kaskádovať odstránenie kategórie do všetkých záznamov interest_user.
Akékoľvek usmernenie by bolo veľmi oceňované, pretože môj mozog je trochu frazzled.
Na zdravie! alex
odpovede:
0 pre odpoveď č. 1Mnohí až mnohí:
Podľa Laravel 3 Dokumenty o zahraničných kľúčoch, vaša migrácia pre kontingenčnú tabuľku by mala byť:
$table->foreign("user_id")->references("id")->on("users")->on_delete("cascade");
$table->foreign("interest_id")->references("id")->on("interests")->on_delete("cascade");
Po odstránení používateľa alebo záujmu sa riadky priradené k danému používateľovi alebo záujem o kontingenčnú tabuľku odstránia.
Jeden pre mnohých
Ak máte čo do činenia s one-to-many (napríklad používatelia a kreditné karty). na tabuľke kreditných kariet budete mať user_id a nastaviť cudzí kľúč takto:
$table->foreign("user_id")->references("id")->on("users")->on_delete("cascade");
(v podstate presne tak ako mnohí-to-mnoho)
Takže keď vymažete používateľa, riadky (riadky) v tabuľke kreditných kariet priradené k tomuto používateľovi budú tiež odstránené.