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工匠用户:安装

我这是输出:

Instalando migraciones de usuario... 没有什么可迁移的。完毕。

问题是迁移没有运行。

但是如果我在终端中运行这个命令:

php artisan migrate --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有趣:

作曲家.json

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