2014-03-06 75 views
3

我创建了一个名为AttachUsers的命令。当我运行的命令,我得到Laravel 4 artisan command not see binding

Argument 1 passed to AttachPhones::__construct() must be an instance of Acme\\Repositories\\Organizations\\OrganizationRepositoryInterface, none given, called in \/Users\/jonson\/sites\/acme\/app\/start\/artisan.php on line 5 and defined","file":"\/Users\/jonson\/sites\/acme\/app\/commands\/AttachPhones.php","line":30}} 

我已绑定的界面我在仓库服务提供商的文件,这是目前我的控制器沃金。我的命令文件如下

<?php 
use Illuminate\Console\Command; 
use Symfony\Component\Console\Input\InputOption; 
use Symfony\Component\Console\Input\InputArgument; 
use \Acme\Repositories\Organizations\OrganizationRepositoryInterface; 

class AttachUsers extends Command { 

protected $organizations; 

/** 
* The console command name. 
* 
* @var string 
*/ 
protected $name = 'acme:attach_users'; 

/** 
* The console command description. 
* 
* @var string 
*/ 
protected $description = 'Cron command to attach users from import to organizations'; 

/** 
* Create a new command instance. 
* 
* @return void 
*/ 
public function __construct(OrganizationRepositoryInterface $organizations) 
{ 
    $this->organizations = $organizations; 

    parent::__construct(); 
} 

回答

1

您可能会打电话给Artisan::add(new MyCommand)。任何时候你使用“new”关键字,IoC容器都会被完全绕过,并且自动依赖注入将会而不是工作。相反,请使用Artisan::add(App::make('MyCommand'))或速记Artisan::resolve('MyCommand')

+2

我试过了,没有区别 – user3061986