Wie lösche ich ein Modell mit PHP Artisan?

Lesezeit: 6 Minuten

Benutzer-Avatar
Jonathan Solorzano

Gibt es einen Befehl zum sicheren Löschen eines Modells in Laravel 5? Um ein Modell zu erstellen, verwenden wir

php artisan make:model modelname

Und das wird ein Modell unter erstellen app Ordner und auch eine Migration in database/migrations

Aber was ich nicht finden kann, ist, wie man ein Modell löscht …

  • Sie müssen das Modell manuell löschen.

    – Robin

    28. Mai 2015 um 21:20 Uhr

  • Also muss ich nur die Modelldatei im App-Ordner und die Migration @RobinR entfernen?

    – Jonathan Solorzano

    28. Mai 2015 um 21:21 Uhr


  • Ja, wenn Sie die Migrationsdatei entfernen möchten. Wenn Sie andernfalls ein Rollback der Migration durchführen möchten, müssen Sie ein Rollback ausführen.

    – Robin

    28. Mai 2015 um 21:22 Uhr


  • Hmmm ok, es wäre nützlich, einen Befehl dafür zu haben … Danke @RobinR, eine andere Frage, wenn ich eine Spalte einer Tabelle hinzufügen oder löschen möchte, muss ich eine neue Migration erstellen?

    – Jonathan Solorzano

    28. Mai 2015 um 21:26 Uhr

  • Nun, die Sache ist, dass ich ein Modell löschen möchte, das vor drei anderen erstellt wurde. Kann ich angeben, welches Modell @RobinR zurücksetzen soll?

    – Jonathan Solorzano

    28. Mai 2015 um 22:51 Uhr


Benutzer-Avatar
hfingler

Löschen eines Modells: Löschen Sie einfach das Modell unter App/ oder irgendeinen anderen Ordner.

Löschen einer Migration: Wenn Sie sie migriert haben (was bedeutet, dass die Datenbank Änderungen erlitten hat), haben Sie zwei Möglichkeiten:

Der “Projektstart” / hässliche Weg ist zu migrate:rollback bis die Migration rückgängig gemacht wird (wenn es die letzte Migration war, die Sie durchgeführt haben, reicht ein Rollback, wenn nicht, müssen Sie ein paar Mal zurücksetzen), dann löschen Sie die Migrationsdatei (die in der database/migrations Mappe. Wichtig hier: Die Klasse der Migration wird immer noch Autoloader von Composer sein. Sie müssen also das Laden der Migrationsklasse entfernen vendor/composer/autoload_classmap.php. Vielleicht composer dumpautoload wird funktionieren, hat es aber nicht für mich. Wenn Sie keine wichtigen Daten in der DB haben und diese löschen können, löschen Sie die Migrationsdatei. composer dumpautoload dann renne php artisan migrate:refresh. Dadurch wird jede Migration rückgängig gemacht und dann alles wieder hinein migriert.

Die Methode “Dies ist in Produktion und ich habe es vermasselt”: Erstellen Sie eine weitere Migration, bei der die up-Methode die Tabelle der ersten Migration löscht, down erstellt sie (im Grunde die up-Methode aus der ersten Migration). Lassen Sie die beiden Migrationsdateien dort, entfernen Sie sie nicht.

Wenn Sie es nicht migriert haben, löschen Sie einfach die Migrationsdatei, composer dumpautoload und wenn du welche hast class/file not found Fehler, überprüfen Sie, ob vendor/composer/autoload_classmap.php hat die Klasse der Datei, die Sie gerade entfernt haben, und löschen Sie die Zeile dort.

  • Danke, in meinem Fall befindet sich die App noch in der Entwicklungsphase. Die Schritte wären also die gleichen wie in der Produktion, oder lösche ich sie einfach?

    – Jonathan Solorzano

    30. Mai 2015 um 4:28 Uhr

  • Wenn Sie sich in einer frühen Entwicklungsphase befinden, was bedeutet, dass sich Ihre Datenbank möglicherweise noch ändert, führen Sie einen Rollback durch, bis die Migration rückgängig gemacht wird, und entfernen Sie die Migrationsdatei. dumpautoload, und migrieren Sie erneut. Ich würde Ihnen auch empfehlen, einige Seeder einzurichten, um das Testen dann zu vereinfachen php artisan migrate:refresh --seed. Ich werde der Antwort die Aktualisierungslösung hinzufügen.

    – hfingler

    30. Mai 2015 um 5:03 Uhr

  • Löschen der App/model class, Löschen der Migrationsdatei und manuelles Entfernen des Eintrags aus autoload_classmap.php, funktionieren diese Schritte? Oder sollte ich verwenden composer dumpautoload um jeden Preis?

    – BraveNinja

    24. Oktober 2016 um 18:53 Uhr

Benutzer-Avatar
DAVID AJAYI

Kein Befehl, einfach manuell und sicher

  1. Löschen Sie zuerst das Modell (falls Sie das Modell nicht mehr benötigen).
  2. Löschen Sie die Migration von ...database/migrations Mappe
  3. Wenn Sie bereits migriert sind, dh wenn Sie bereits ausgeführt haben php artisan migratemelden Sie sich bei Ihrem phpmyadmin oder SQL (je nachdem) an und löschen Sie in Ihrer Datenbank die durch die Migration erstellte Tabelle
  4. Suchen Sie in Ihrer Datenbank in der Migrationstabelle die Zeile mit dem Namen der Migrationsdatei und löschen Sie die Zeile.

Funktioniert bei mir, hoffe es hilft!

  • Wenn Sie die phpstorm-IDE verwenden, führen Sie zuerst die Schritte 1, 2 und 3 aus (oder statt Schritt 3 führen Sie php artisan migrate:refresh) und drücken Sie am Ende zweimal die Umschalttaste, um das Suchfenster zu öffnen und nach dem Modell zu suchen, das Sie gerade gelöscht haben, und es zeigt Ihnen, ob noch etwas übrig ist!

    – mjavadtatari

    4. August um 18:37 Uhr


suche in vendor/composer/autoload_classmap.php Strg+F schreibe Modellname löschen erlaube Bearbeitung dieses Ordners und lösche Modellpfad

Das Problem kann auch auftreten, wenn sich Ihr Datenbankname von dem unterscheidet, der in definiert wurde .env Datei.

DB_DATABASE=laravel

Standardmäßig ist die Datenbankstruktur in .env legt den Datenbanknamen als Laravel fest. Sie können ersetzen laravel mit dem Namen Ihrer Datenbank.

Folgendes habe ich für mein Projekt erstellt, um Controller und Modell zu entfernen

app/Console/Commands/RemoveController.php

<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;

class RemoveController extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature="remove:controller {name}";

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Remove the controller class';

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     *
     * @return mixed
     */
    public function handle():void
    {
        $controllerName = $this->argument('name').'.php';
        $controllerPath = base_path('app/Http/Controllers/').$controllerName;
        if(file_exists($controllerPath)){
            unlink($controllerPath);
            $this->line('Controller removed successfully.');
        }else{
            $this->line('No controller found.');
        }
    }
}

app/Console/Commands/RemoveModel.php

<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;

class RemoveModel extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature="remove:model {name}";

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Remove the model class';

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     *
     * @return mixed
     */
    public function handle():void
    {
        $modelName = $this->argument('name').'.php';
        $modelPath = base_path('app/').$modelName;
        if(file_exists($modelPath)){
            unlink($modelPath);
            $this->line('Model removed successfully.');
        }else{
            $this->line('No controller found.');
        }
    }
}

Ich hoffe, das hilft jemandem

Benutzer-Avatar
kalpana udara

Es gibt keinen handwerklichen Befehl dafür. Sie möchten es manuell tun.

  1. Sie möchten Ihr Modell aus dem Models-Verzeichnis löschen
    Pfad: app\Models\yourmodel.php

  2. Im nächsten Schritt möchten Sie Ihre Migrationsdatei aus dem Migrationsordner löschen
    Pfad: database\migrations\yourmigrationfile.php

Hinweis: Wenn Sie bereits migriert sind, sollten Sie die Tabelle aus Ihrer Datenbank löschen. Sie können sich in Ihr phpmyadmin-Panel einloggen und dies tun.

Benutzer-Avatar
Arrun AS

Sie können das Modell im App-Ordner löschen, wenn Sie diesen Fehler sehen (Modell existiert bereits!).

Geben Sie hier die Bildbeschreibung ein

  • Aus Bewertung: Hallo, dieser Beitrag scheint keine Antwort auf die Frage zu geben; es ist besser als Kommentar geeignet.

    – sɐunıɔןɐqɐp

    10. Oktober 2019 um 13:45 Uhr

1299070cookie-checkWie lösche ich ein Modell mit PHP Artisan?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy