【问题标题】:Laravel 4.1 Run migrations and update configuration from package dependenciesLaravel 4.1 运行迁移并从包依赖项更新配置
【发布时间】:2014-04-03 14:52:00
【问题描述】:

我正在开发一个使用 Sentry 2 的 Laravel 4 包。 为了安装Sentry 2,我必须运行迁移并发布它们的配置:

php artisan migrate --package=cartalyst/sentry
php artisan config:publish cartalyst/sentry

我希望我的包的用户可以简单地为我自己的包运行迁移和发布配置,而不必为 Sentry 2 或我可能需要的任何其他包运行它。

有没有办法做到这一点?应该这样做,还是应该继续要求我的用户为每个包运行迁移/发布配置?

谢谢

编辑:
正如所承诺的,我遵循了@AntonioCarlosRibeiro 的提议并创建了一个新的 Artisan 命令:

class SybilInstall extends Command
{
    protected $name = 'sybil:install';
    protected $description = 'Install the sybil package';
    public function fire()
    {
        $this->call(
            'migrate',
            array('--package' => 'cartalyst/sentry')
        );
        $this->call(
            'migrate',
            array('--package' => 'ghunti/sybil')
        );
        $this->call(
            'asset:publish',
            array('ghunti/sybil')
        );
    }
}

现在人们只需要运行php artisan sybil:install,它会处理一切

【问题讨论】:

    标签: php laravel migration package config


    【解决方案1】:

    在你的包中你可以运行(Laravel 4.1+):

    Artisan::call('migrate', array('option' => '--package', 'argument' => 'cartalyst/sentry'));
    
    Artisan::call('config:publish', array('argument' => 'cartalyst/sentry'));
    

    文档:http://laravel.com/docs/commands#calling-other-commands

    在旧版本上:

    Artisan::call('migrate --package=cartalyst/sentry');
    
    Artisan::call('config:publish cartalyst/sentry'):
    

    【讨论】:

    • 不错的安东尼奥。你建议我把这些线放在哪里?
    • IMO,创建一个新的 artisan 命令 (php artisan package:initialize) 将是最好的,您甚至可以从中运行自己的迁移。
    • 会试一试并将结果发回,以便任何人在将来需要时都可以使用它。再次感谢您的帮助
    • 此解决方案不再准确。在 Laravel 4.1 中,您必须在数组中传递参数,例如 Artisan::call('migrate', array('--package', 'cartalyst/sentry'));。我猜这个解决方案是针对早期版本的 Laravel。
    猜你喜欢
    • 2020-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-23
    • 2015-04-12
    • 1970-01-01
    相关资源
    最近更新 更多