2016-08-20 13 views
2

モデル、コントローラー、ビュー、ルート、マイグレーションをYAMLの単純な数行で作成するのに役立つシンプルなジェネレーターを作成しています。 今までにすべてが素晴らしいように見えましたが、問題があり、それについて多くのことを検索しましたが、何も得られません。laravelのマイグレーションファイルを手動で作成する方法

私のツールは、事はphp artisan migrateコマンドは、ファイルを検出し、それを移行できるように、特定の規則に従う必要があり、移行ファイル名で、移行ファイルを生成します。

ファイル名は、年、月、日、その後数の移行の説明を開始する必要があります。例えば、 。 2014_10_12_000000_create_users_table.php 2014_10_12_100000_create_password_resets_table.php は今、それはファイルの先頭に日付を入れることは簡単ですが、どのように私は、数の規則に従うことができますか? 新しいマイグレーションファイルごとに1つずつ番号が増えます。

にはどうすればその番号を知っているし、作成した最後の移行ファイルよりも大きな数を持つ新しい移行ファイルを作成するために作成した最後のファイルを検出することができますか?

私はこのコードでマイグレーションファイル名を作成します。

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

しかし、php artisan migrateコマンドでは、番号なしでファイルを検出できません。だから私はどうすればいいのですか?

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

あなたの 'シンプルジェネレータ'はコンソールコマンドですか? – KmasterYC

+3

必要なものはすべてここにあります:https://github.com/illuminate/database/blob/master/Migrations/MigrationCreator.php#L178 – Winter

+0

冬に感謝します。出来た ! –

答えて

0

それは数ではありません、それはとても143710.のように、あなたはそれを得るために、このような何かを試すことができ、現在のタイムスタンプです。移行を作成するとすぐに、の名前付け規則はタイムスタンプのようになり、テーブルの名前になります。

それ以外の場合は、Laravel Generatorを使用してください。 炭素タイムゾーンを使用することができます。

+0

Carbonの使用は不要です。 'date( 'Y_m_d_His')'は日付の接頭辞全体に十分であり、外部依存関係は必要ありません。 – Winter

+0

同意すると、同じ結果が得られます。 –

0

それはLaravelの作り付けのメカニズムです:

0

実際に移行ファイルの名前の形式がわかっている場合は、Illuminate \ Database \ Migrations \ MigrationCreatorファイルを参照する必要があります。あなたが発注と推測されている番号は、実際にはそのファイルに次の関数で見つけることができるタイムスタンプです。

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

そして次は、完全なファイル名作成機能である:

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

はそれが役に立てば幸い。

+0

ありがとうございます。しかし、移行中にこのエラーが発生しました PHP解析エラー:予期しない '2016'(T_LNUMBER)、識別子(T_STRING)が予期しない構文エラー –

+0

更新されたコードを表示できますか? –

関連する問題