这是我的问题。
我在此路径中迁移了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答案 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",
]
},