0

これは私の問題です。

このパス内に移行 2013_08_25_220444_create_modules_table.php があります。

アプリ/モジュール/ユーザー/移行/

カスタム職人コマンドを作成しました:

<?php

use Illuminate\Console\Command;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Input\InputArgument;

class UsersModuleCommand extends Command {

/**
 * The console command name.
 *
 * @var string
 */
protected $name = 'users:install';

/**
 * The console command description.
 *
 * @var string
 */
protected $description = 'Instala el modulo de usuarios.';

/**
 * Create a new command instance.
 *
 * @return void
 */
public function __construct()
{
    parent::__construct();
}

/**
 * Execute the console command.
 *
 * @return void
 */
public function fire()
{
    echo 'Instalando migraciones de usuario...'.PHP_EOL;
    $this->call('migrate', array('--path' => app_path() . '/modules/user/migrations'));




    echo 'Done.'.PHP_EOL;
}

/**
 * Get the console command arguments.
 *
 * @return array
 */
protected function getArguments()
{
    return array(
        //array('example', InputArgument::REQUIRED, 'An example argument.'),
    );
}

/**
 * Get the console command options.
 *
 * @return array
 */
protected function getOptions()
{
    return array(
        //array('example', null, InputOption::VALUE_OPTIONAL, 'An example option.', null),
    );
}

}

fire() メソッドで、migrate コマンドを呼び出し、オプションの配列も渡します。

次に、ターミナルで次のコマンドを実行します。

php artisan ユーザー:インストール

そして私はこれが出力です:

Instalando migraciones de usuario... 移行するものはありません。終わり。

問題は、移行が実行されないことです。

しかし、ターミナルでこのコマンドを実行すると:

php 職人の移行 --path=app/modules/user/migrations

すべて正常に動作し、移行 2013_08_25_220444_create_modules_table.php を実行します

注: app/start/artisan.php ファイルに artisan コマンドを登録しました。

Artisan::add(new UsersModuleCommand);

私は何を間違っていますか?

私の英語でごめんなさい:D

4

1 に答える 1

1

コマンド ラインで渡したパスはアプリ ルートからの相対パスですが、コマンドで渡したパスは絶対パスであることに注意してください。コマンドで呼び出す必要があるのは次のとおりです。

$this->call('migrate', array('--path' => 'app/modules/user/migrations'));

ところで、いつかこれらのマイグレーションをロールバックしたいと思うかもしれないので、 のクラスマップに以下を追加するapp/modules/user/migrationsのは興味深いことですcomposer.json:

composer.json

...
"autoload": {
    "classmap": [
        ...
        "app/modules/user/migrations",
    ]
},
于 2013-08-26T23:42:24.237 に答える