目前我正在从命令行运行数据库迁移,如下所示:
> php artisan migrate:make foo --create:footable
> php artisan migrate
但是,如何从非Laravel脚本运行Laravel 4迁移?而不是通常的工匠migarte命令,甚至是Artisan::call()
指令。
为了澄清,我需要运行已经创建的迁移。
答案 0 :(得分:2)
在Laravel 4.1+中,以下内容不起作用:
Artisan::call('migrate', array('option' => '--bench', 'argument' => 'vendor/package'))
Throws : The "option" argument does not exist.
Artisan::call('migrate --package=vendor/package');
Throws : Command "migrate --bench=vendor/package" is not defined
但这样做:
Artisan::call('migrate', array('--bench'=>'vendor/package'))
答案 1 :(得分:1)
您必须执行以下操作来启动Laravel应用程序:
<?php
require 'vendor/autoload.php';
require 'bootstrap/start.php';
然后您将可以访问$app
全局变量,该变量包含整个Laravel应用程序,包括Artisan,因此您将能够:
Artisan::call('migrate');
和
$app['artisan']->call('migrate');
如果您有一个外部命名空间类,如下所示:
<?php namespace App\Example;
require 'vendor/autoload.php';
require 'bootstrap/start.php';
use Form;
use Artisan;
class Example {
public function make() {
Artisan::call('migrate');
} `enter code here`
}
您可以使用以下方式调用它:
<?php
require 'Example.php';
use App\Example\Example;
$s = new Example;
dd($s->make());
这是不可取的,但作为最后的手段,您可以使用:
return $GLOBALS['app']['artisan']->call('migrate');