Я пытаюсь создать пользовательскую команду миграции laravel (5.2), которая в основном работает так же, как migrate:status
, за исключением того, что она просто перечисляет ожидающие миграции вместо всех миграций.
Для этого я очень просто скопировал migrate:status
в другой класс в моем каталоге app/console и скорректировал код в соответствии со своими потребностями. Однако всякий раз, когда я пытаюсь запустить его, я получаю сообщение об ошибке:
[Illuminate\Contracts\Container\BindingResolutionException] Цель [Illuminate\Database\Migrations\MigrationRepositoryInterface] не может быть создана при создании [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,`
]