Heim >PHP-Framework >Laravel >Vermeiden Sie die Grube! Eine Gefahr der Laravel-Datenbankmigrationsfunktion

Vermeiden Sie die Grube! Eine Gefahr der Laravel-Datenbankmigrationsfunktion

藏色散人
藏色散人nach vorne
2021-06-11 11:51:402161Durchsuche

Die folgende Tutorial-Kolumne von laravel stellt Ihnen die Fallstricke der Laravel-Datenbankmigrationsfunktion vor. Ich hoffe, dass sie Freunden, die sie benötigen, hilfreich sein wird!

  • Umgebung: Laravel 8Laravel 8
  • 需求用到 Laravel 数据库迁移功能,因本人是强迫症处女座所以喜欢自己命名文件例如:

Vermeiden Sie die Grube! Eine Gefahr der Laravel-Datenbankmigrationsfunktion

  • 但是在执行迁移的时候报错:

Vermeiden Sie die Grube! Eine Gefahr der Laravel-Datenbankmigrationsfunktion

  • 经过几轮尝试发现 Laravel 对迁移文件的 文件名命名格式 是有固定的解析的,所以当我文件名完全按照它的风格去写的时候就正常运行了

Vermeiden Sie die Grube! Eine Gefahr der Laravel-Datenbankmigrationsfunktion

  • 当然类名也必须统一:

Vermeiden Sie die Grube! Eine Gefahr der Laravel-Datenbankmigrationsfunktion

  • 吐槽的点在于:文档中并没有提及文件名称命名风格的强制要求 故今天记录下此小坑
  • 貌似是另一个坑或者说是框架的不足:那就是表结构 没办法持续集成,例如今天我需要对某个表加字段,但此时已经迁移过了,那就会 没办法再次运行同一个迁移文件必须要创建新的迁移文件,当然这我也理解这是为了方便回滚,但是我的需求就是为了新功能而持续加字段,并不需要回滚,所以我的 解决方案 就是每次都清空 migrations
  • Ich muss die Datenbankmigrationsfunktion Laravel verwenden, da ich eine Jungfrau bin mit Zwangsstörung Sie benennen die Dateien also gerne selbst, zum Beispiel:
  • 5d3874c23d044f1817eb1b777eb 7e19 .png
Aber beim Ausführen der Migration wurde ein Fehler gemeldet:

Vermeiden Sie die Grube! Eine Gefahr der Laravel-Datenbankmigrationsfunktion

Nach mehreren Versuchsrunden habe ich Laravel gefunden Code> hat eine feste Parsen des <code>Dateinamensformats der migrierten Datei. Wenn ich also den Dateinamen genau seinem Stil entsprechend schreibe, läuft er normal🎜🎜🎜Vermeiden Sie die Grube! Eine Gefahr der Laravel-Datenbankmigrationsfunktion🎜🎜🎜Natürlich müssen auch die Klassennamen vereinheitlicht werden: 🎜🎜🎜 Vermeiden Sie die Grube! Eine Gefahr der Laravel-Datenbankmigrationsfunktion🎜🎜 🎜Der Punkt Die Beschwerde lautet: Der Dateiname wird in den Anforderungen an den Dokumentstil nicht erwähnt Also habe ich diesen Fallstrick heute aufgezeichnet🎜🎜Es scheint ein weiterer Fallstrick oder ein Mangel des Frameworks zu sein: das heißt, die Tabellenstruktur kann nicht kontinuierlich integriert werden Heute muss ich beispielsweise ein Feld hinzufügen, aber es wurde zu diesem Zeitpunkt migriert. Dann gibt es keine Möglichkeit, dieselbe Migrationsdatei erneut und eine neue Migrationsdatei auszuführen muss erstellt werden Natürlich verstehe ich auch, dass dies das Rollback erleichtern soll, aber ich Die Anforderung besteht darin, kontinuierlich Felder für neue Funktionen hinzuzufügen, ohne dass ein Rollback erforderlich ist, also ist meine Lösung um die Tabelle migrations jedes Mal zu löschen, da Sie in dieser Tabelle steuern, ob dieselbe Migrationsdatei wiederholt ausgeführt werden kann. Der Code lautet wie folgt: 🎜🎜
trait Trait_Migrate
{
    /**
     * @desc 数据表:初始化
     * @return Void
     */
    static public function CI_Table_Structure() : Void
    {
        # 清空记录表以保证能持续迁移
        DB::table( 'migrations' ) -> truncate();
        # 执行迁移
        Artisan::call( 'migrate --force --path=/database/migrations/' . SELF::$CI_File );
    }

}
🎜🎜 Im Allgemeinen ist dies der Fall Wenn Sie die Regeln des Framework-Dokuments vollständig befolgen, kommt es jedoch zu Situationen, in denen die Standardfunktionen des Frameworks die Anforderungen nicht erfüllen können. Verwandte Empfehlungen: 🎜Das neueste Laravel-Video Tutorials🎜🎜🎜

Das obige ist der detaillierte Inhalt vonVermeiden Sie die Grube! Eine Gefahr der Laravel-Datenbankmigrationsfunktion. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen