2

我想在控制器中获取我的 laravel 应用程序的迁移状态作为 json 响应,我尝试

$migratiorns = \Artisan::call('migrate:status');
return response()->json($migratiorns);

\Artisan::call返回一个整数0

我应该使用什么来获得所需的响应?

4

4 回答 4

2

$migration 的值将是您在命令行上看到的输出,这是一个表格,它基本上是一个无法转换为 json 的字符串值。

于 2018-09-10T14:34:04.410 回答
1

这个问题很老了,但我遇到了同样的问题,但没有找到任何解决方案,所以我做了一个小助手函数来即时获取待处理的迁移,也许它会帮助其他人:

function getPendingMigration($migrationsFolderPath = false, $toJson = false)
{
    $migrationsFolderPath = $migrationsFolderPath ?: database_path('/migrations');
    $migrations = app('migrator')->getMigrationFiles($migrationsFolderPath);
    $pendingMigrations = [];
    foreach ($migrations as $migration => $fullpath){
        if(!\Illuminate\Support\Facades\DB::table('migrations')->where('migration', $migration)->exists())
            array_push($pendingMigrations, $migration);
    }
    return $toJson ? json_encode($pendingMigrations) : $pendingMigrations;
}
于 2019-03-27T13:41:51.563 回答
0

这是我的控制台代码

protected $signature = 'command:name {json?}';

ini句柄函数

public function handle()
{
    $json = $this->argument('json');
    if($json){
        $a = ['foo'=>
            ['bar', $json]
        ];
        $a = collect($a);
        $this->info($a->toJson());
    } else {
        $this->info('Display this on the screen');
    }
}

赶紧跑

php artisan command:name -json 

将得到 json 输出

于 2020-04-21T09:03:33.797 回答
0

一个简单的方法如下

\Artisan::call('migrate:status');
dd(Artisan::output());
于 2022-01-20T11:52:08.897 回答