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
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
DAVID AJAYI
Kein Befehl, einfach manuell und sicher
Löschen Sie zuerst das Modell (falls Sie das Modell nicht mehr benötigen).
Löschen Sie die Migration von ...database/migrations Mappe
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
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
kalpana udara
Es gibt keinen handwerklichen Befehl dafür. Sie möchten es manuell tun.
Sie möchten Ihr Modell aus dem Models-Verzeichnis löschen
Pfad: app\Models\yourmodel.php
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.
Arrun AS
Sie können das Modell im App-Ordner löschen, wenn Sie diesen Fehler sehen (Modell existiert bereits!).
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
12990700cookie-checkWie lösche ich ein Modell mit PHP Artisan?yes
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