如何在laravel4中运行出色的迁移?

时间:2013-08-26 05:40:39

标签: command migration laravel laravel-4

这是我的问题。

我在此路径中迁移了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 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

1 个答案:

答案 0 :(得分:1)

请注意您在命令行上传递的路径是如何相对于应用程序根目录的,但是您在命令中传递的路径是绝对的?你应该在你的命令中调用的是:

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

顺便说一下,既然有一天你可能想要回滚这些迁移,那么有趣的是你将app/modules/user/migrations添加到composer.json的类映射中:

<强> composer.json

...
"autoload": {
    "classmap": [
        ...
        "app/modules/user/migrations",
    ]
},