2017-06-27 1 views
2

könnte mir jemand erklären, wie kann ich meine modules migration namespaces richtig angeben? Wie ich in der Dokumentation zu sehen, dann ist es:Wie migrieren Sie Namespace-Klassen in yii2 korrekt?

return [ 
'controllerMap' => [ 
    'migrate' => [ 
     'class' => 'yii\console\controllers\MigrateController', 
     'migrationNamespaces' => [ 
      'app\migrations', // Common migrations for the whole application 
      'module\migrations', // Migrations for the specific project's module 
      'some\extension\migrations', // Migrations for the specific extension 
      ], 
     ], 
    ], 
]; 

Aber es gibt, in denen keine Erklärung Datei muss ich die Befehle schreiben. Ich habe es in config.php versucht, als:

'controllerMap' => [ 
    'migrate' => [ 
     'class' => 'yii\console\controllers\MigrateController', 
     'migrationNamespaces' => [ 
      'app\modules\adBoard\migrations', 
     ], 

Aber ich weiß nicht, welche Controller-Klasse sollte ich schreiben. Kann mir jemand sagen, in welcher Datei ich sie angeben muss und wie ich sie richtig angeben soll?

Antwort

1

Wenn Sie zu dieser Dokumentation

Konfigurieren Befehl Globally

Statt die gleiche Möglichkeit zur Eingabe Werte jedes Mal wenn Sie den Migrationsbefehl ausführen, kann konfigurieren Sie es ein für alle Mal in die Anwendungskonfiguration wie unten gezeigt:

return [ 
    'controllerMap' => [ 
     'migrate' => [ 
      'class' => 'yii\console\controllers\MigrateController', 
      'migrationTable' => 'backend_migration', 
     ], 
    ], ]; 

Mit der obigen Konfiguration wird bei jedem Ausführen des Migrationsbefehls die backend_migration-Tabelle zum Aufzeichnen des Migrationsverlaufs verwendet. Sie müssen es nicht mehr über die Befehlszeilenoption migrationTable angeben.

Namensräume Migrations

Seit 2.0.10 Sie Namensräume für die Migration Klassen verwenden können. Sie können die Liste der Namespaces für die Migration über migrationNamespaces angeben. Die Verwendung der Namespaces für die Migrationsklassen ermöglicht die Verwendung der verschiedenen Quellorte für Migrationen. Zum Beispiel:

return [ 
    'controllerMap' => [ 
     'migrate' => [ 
      'class' => 'yii\console\controllers\MigrateController', 
      'migrationNamespaces' => [ 
       'app\migrations', // Common migrations for the whole application 
       'module\migrations', // Migrations for the specific project's module 
       'some\extension\migrations', // Migrations for the specific extension 
      ], 
     ], 
    ], ]; 

diese Konfiguration sollte in Ihnen platziert werden Konsole/config/main.php

aber für benannte Migration remeber, die für 2.0.10

1

je nach yii2- Start Vorlagenanwendung (basic oder advanced) Die Position von "Konsole" spezifischen Einstellungen befinden sich in verschiedenen Verzeichnissen.

Für grundlegende Vorlage, Konsole holen Einstellungen von <app>/config/console.php Datei.

Und für erweiterte Vorlage, sollten Sie <app>/console/config/main.php Datei bearbeiten.

Denken Sie daran, dass sich Ihre Einstellungen für die Konsole nicht auf die Webeinstellungen auswirken. Wenn Sie also eine Komponente im gesamten Projekt registrieren möchten, müssen Sie sie in beiden Dateien duplizieren.

P.S.Ich möchte noch ein Detail hinzufügen über Vorlage vorgeschoben, ist, dass es gemeinsame Einstellung für Frontend und Backend Unter Anwendungen hat, die in <app>/common/config/main.php befindet, aber diese Einstellungen sind nicht mit Konsolenbefehle gemeinsam.

+0

Ich habe versucht, meine erwähnten Befehle in 'console.php' Datei einzugeben (wegen der' basic' Vorlage), aber hat nicht funktioniert :(Ich kann meine Migration wegen des Namensraums nicht ausführen, wenn ich es lösche, ist es Arbeiten – HELPME