gpt4 book ai didi

laravel - 自定义 Laravel 迁移命令 "[Illuminate\Database\Migrations\MigrationRepositoryInterface] is not instantiable"

转载 作者:行者123 更新时间:2023-12-04 16:42:23 25 4
gpt4 key购买 nike

我正在尝试创建一个自定义的 Laravel (5.2) 迁移命令,它的工作原理与 migrate:status 基本相同除了它只列出挂起的迁移而不是所有的迁移。

为此,我非常简单地复制了 migrate:status进入我的 app/console 目录中的另一个类并调整代码以满足我的需要。但是,每当我尝试运行它时,都会出现错误:

[Illuminate\Contracts\Container\BindingResolutionException] Target [Illuminate\Database\Migrations\MigrationRepositoryInterface] is not instantiable while building [App\Console\Commands\PendingMigrations, Illuminate\Database\Migrations\Migrator].



类本身的内容和 fire()方法似乎无关紧要,因为它没有走那么远,它在 __construct() 内失败了方法。
<?php namespace App\Console\Commands;

use Illuminate\Console\Command;
use Illuminate\Database\Migrations\Migrator;

class PendingMigrations extends Command
{
/**
* The console command name.
*
* @var string
*/
protected $name = 'migrate:pending';

/**
* The console command description.
*
* @var string
*/
protected $description = 'Shows a list of pending migrations';

/**
* The migrator instance.
*
* @var \Illuminate\Database\Migrations\Migrator
*/
protected $migrator;

/**
* Create a new migration rollback command instance.
*
* @param \Illuminate\Database\Migrations\Migrator $migrator
* @return \Illuminate\Database\Console\Migrations\StatusCommand
*/
public function __construct(Migrator $migrator)
{
parent::__construct();

$this->migrator = $migrator;
}

/**
* Execute the console command.
*
* @return void
*/
public function fire()
{
}
}

其原因可能与 IoC 容器和加载事物的顺序有关,但我对 Laravel 的内部工作原理了解得不够多,无法弄清楚。

肯定有可能吧?

我目前停留在 5.2,所以我不确定这个问题是否存在于更新的版本中。

到目前为止,我唯一尝试的是将迁移服务提供商添加到 config/app.php 中的列表顶部。但是它似乎没有影响,无论如何这只是一个随机猜测。
providers' => [
Illuminate\Database\MigrationServiceProvider::class,`
]

最佳答案

我解决了这个问题:

$this->migrator = app('migrator');

但这不一定是最好的方法

关于laravel - 自定义 Laravel 迁移命令 "[Illuminate\Database\Migrations\MigrationRepositoryInterface] is not instantiable",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45938615/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com