2015-05-28 8 views
17

Esiste un comando per eliminare in sicurezza un modello in Laravel 5? Per creare un modello che usiamoCome eliminare un modello usando php artisan?

php artisan make:model modelname 

E che creerà un modello nella cartella app, e anche una migrazione in database/migrations

Ma quello che non riesco a trovare è come cancellare un modello ...

+0

Dovrai eliminare il modello manualmente. – Robin

+0

Quindi devo solo rimuovere il file del modello nella cartella app e la migrazione @RobinR? –

+0

Sì se si desidera rimuovere il file di migrazione. Altrimenti, se si desidera eseguire un rollback della migrazione, è necessario eseguire un rollback. – Robin

risposta

23

Eliminazione di un modello: è sufficiente eliminare il modello sotto App/ o qualsiasi altra cartella.

Eliminazione di una migrazione: se è stata eseguita la migrazione di esso (cioè la banca dati ha subito modifiche) si hanno due scelte:

Il "progetto di partenza"/brutto modo è quello di migrate:rollback fino a quando la migrazione è annullata (se era l'ultima migrazione che hai fatto, un rollback è sufficiente, in caso contrario dovrai eseguire il rollback un paio di volte) quindi eliminare il file di migrazione (quello all'interno della cartella database/migrations. Cosa importante qui: la classe di migrazione sarà ancora il caricatore automatico per compositore, quindi è necessario rimuovere la classe di migrazione caricando da vendor/composer/autoload_classmap.php. Forse lo composer dumpautoload funzionerà, ma non ha funzionato per me. Se non si dispone di dati importanti nel DB e si può cancellare, eliminare il file di migrazione, composer dumpautoload quindi eseguire php artisan migrate:refresh. In questo modo verrà eseguito il rollback di ogni migrazione, quindi verrà eseguito nuovamente il backup.

Il modo "questo è in produzione e ho incasinato": creare un'altra migrazione in cui il metodo su fa cadere la prima tabella di migrazione, in basso lo sta creando (in pratica metodo dalla prima migrazione). Lascia i due file di migrazione lì dentro, non rimuoverli.

Se non è stata eseguita la migrazione, basta eliminare il file di migrazione, composer dumpautoload e se hai qualche errore class/file not found, controllare se vendor/composer/autoload_classmap.php ha la classe del file appena rimossa e cancellare la riga lì.

+0

Grazie, nel mio caso l'app è ancora in dev. Quindi i passaggi sarebbero gli stessi della produzione o li cancellerei? –

+0

Se si è in fase di sviluppo iniziale, ovvero il DB potrebbe ancora cambiare, eseguire il rollback fino a quando la migrazione non viene annullata, rimuovere il file di migrazione, 'dumpautoload' e migrare nuovamente. Ti raccomanderei anche di configurare alcuni seeders per rendere più semplice il test, poi "php artisan migrate: refresh --seed'. Aggiungerò la soluzione di aggiornamento alla risposta. – hfingler

+0

Eliminando la classe 'App/model', eliminando il file di migrazione e rimuovendo manualmente la voce da autoload_classmap.php, questi passaggi funzioneranno? O dovrei usare 'compositore dumpautoload' ad ogni costo? – BraveNinja