/ / Laravel 3 - Kaskáda odstráni mnoho z mnohých vzťahov - orm, laravel, cudzie kľúče, laravel-3

Laravel 3 - Kaskáda odstráni na veľa veľa vzťahov - orm, laravel, cudzích kľúčov a laravel-3

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ď č. 1

Mnohí 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é.