2015-09-17 21 views
5

Questo dovrebbe essere semplice ma non riesco a trovarlo nella documentazione o altrove. Come posso TRUNCATE...CASCADE una tabella con chiavi esterne in Laravel 5.1 utilizzando l'ORM Eloquent? L'utilizzo di solo User::truncate(); non passa attraverso l'argomento CASCADE.TRUNCATE ... CASCADE in Laravel 5

+0

È un database MySQL? – gmsantos

+0

No, sto usando Postgres - Sto cercando di farlo senza scrivere SQL raw –

+0

Non credo sia possibile. Non vedo nulla nell'API per questo e la piccola ricerca che ho fatto, sembra che le persone stiano semplicemente usando l'istruzione 'DB :: ('TRUNCATE users CASCADE');' – user3158900

risposta

6

Sembra che l'unico modo per farlo è quello di eseguire la dichiarazione direttamente:

DB::statement('TRUNCATE users CASCADE'); 
0

Se è necessario truncate più di una tabella, è possibile rimuovere la parola chiave CASCADE e fornire un elenco di nomi di tabelle separate con una virgola.

$tables = [ 
     'roles', 
     'role_users', 
     'users', 
     'revisions', 
    ]; 

    if (count($tables) > 1) { 
     DB::statement('TRUNCATE TABLE ' . implode(',', $tables) . ';'); 
    } else { 
     DB::statement('TRUNCATE TABLE ' . $tables[0] . ' CASCADE;'); 
    }