2016-08-20 2 views
2

Ich erstelle einen einfachen Generator, der mir bei meiner Arbeit hilft, Modelle, Controller, Ansichten, Routen und Migrationen mit einfachen paar Zeilen YAML zu erstellen. Bis jetzt sieht alles gut aus, aber ich hatte ein Problem und habe viel darüber gesucht, aber nichts bekommen.Manuelles Erstellen einer Laravel-Migrationsdatei

Mein Tool generiert eine Migrationsdatei. Der Name der Migrationsdatei muss bestimmten Regeln entsprechen, damit der Befehl php artisan migrate die Datei erkennen und migrieren kann.

Der Dateiname muss mit dem Jahr, dem Monat, dem Tag und einer Nummer beginnen und dann die Beschreibung der Migration. zum Beispiel. 2014_10_12_000000_create_users_table.php 2014_10_12_100000_create_password_resets_table.php Jetzt ist es einfach, das Datum am Anfang der Datei zu setzen, aber wie kann ich die Zahlenregeln folgen? Die Nummer wird bei jeder neuen Migrationsdatei um eins erhöht.

Wie kann ich die zuletzt erstellte Datei ermitteln, um ihre Nummer zu kennen, und eine neue Migrationsdatei mit einer größeren als der zuletzt erstellten Migrationsdatei erstellen?

In der Zwischenzeit erstelle ich den Migrationsdateinamen mit diesem Code.

$migrationFileName = date('y').'_'.date('m').'_'.date('d').'_'.'create'.ucfirst($name).'Table'; 

Aber der Befehl php artisan migrate kann die Datei weiterhin nicht erkennen, ohne die Nummer zu migrieren. Wie kann ich das tun?

+0

Ihr 'einfacher Generator' ist ein Konsolenbefehl? – KmasterYC

+3

Alles, was Sie brauchen, ist hier: https://github.com/illuminate/database/blob/master/Migration/MigrationCreator.php#L178 – Winter

+0

Danke Winter. Es funktionierte ! –

Antwort

0

Es ist keine Zahl, ist es aktuelle Zeitstempel, wie 143710. Also, man könnte so etwas wie dies versucht, es zu bekommen:

Carbon::now()->format('His'); 
+0

Die Verwendung von Carbon ist unnötig, 'date ('Y_m_d_His')' ist ausreichend für das gesamte Datumspräfix und benötigt keine externen Abhängigkeiten – Winter

+0

Vereinbart, es wird das gleiche Ergebnis geben. –

0

Es ist eingebauter Mechanismus Laravel. Sobald Sie die Migration erstellen, wird naming_convention wie Zeitstempel und Name Ihrer Tabelle aussehen.

Oder Sie können Laravel Generator verwenden. oder Sie können Carbon Zeitzone verwenden.

0

Wenn Sie wissen möchten, was das Format für die Benennung von Migrationsdateien ist, sollten Sie sich die Datei Illuminate \ Database \ Migrations \ MigrationCreator ansehen. Die Nummer, die Sie als Ordnungs sind erraten ist eigentlich ein Zeitstempel, die Sie in der folgenden Funktion in dieser Datei finden:

protected function getDatePrefix() 
{ 
    return date('Y_m_d_His'); 
} 

Und Folgenden ist der vollständige Dateiname Erstellungsfunktion:

protected function getPath($name, $path) 
{ 
    return $path.'/'.$this->getDatePrefix().'_'.$name.'.php'; 
} 

Hoffe, es hilft .

+0

Danke. Aber ich habe diesen Fehler beim Versuch zu migrieren PHP Parse Fehler: Syntaxfehler, unerwartete '2016' (T_LNUMBER), erwartet Identifier (T_STRING) –

+0

Können Sie Ihren aktualisierten Code zeigen? –

Verwandte Themen