2015-07-29 5 views
0

Я работаю с командами и планировщиком, но есть что-то, что я не могу получить, и это аргумент/параметр команды.Laravel 5: Получить атрибут из команды

Контроллер

public function findUsers($id) 
{ 
    Artisan::queue('users:find', ['id' => $id]); 
} 

Kernel.php

protected $commands = [ 
    'App\Console\Commands\Inspire', 
    'App\Console\Commands\FindUsers', 
]; 

protected function schedule(Schedule $schedule) 
{ 
    $schedule->command('inspire') 
      ->hourly(); 

    $schedule->command('users:find')->cron('* * * * *'); 
} 

Команда

<?php namespace App\Console\Commands; 

use Illuminate\Console\Command; 
use Symfony\Component\Console\Input\InputOption; 
use Symfony\Component\Console\Input\InputArgument; 
use App\Connection; 

class FindUsers extends Command { 

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

    /** 
    * The console command description. 
    * 
    * @var string 
    */ 
    protected $description = 'Find users every minute'; 

    /** 
    * Create a new command instance. 
    * 
    * @return void 
    */ 
    public function __construct() 
    { 
     parent::__construct(); 
    } 

    /** 
    * Execute the console command. 
    * 
    * @return mixed 
    */ 
    public function fire() 
    { 
     var_dump($this->argument('id')); 
    } 

    /** 
    * Get the console command arguments. 
    * 
    * @return array 
    */ 
    protected function getArguments() 
    { 
     return [ 
      ['example', InputArgument::REQUIRED, 'An example argument.'], 
     ]; 
    } 

    /** 
    * Get the console command options. 
    * 
    * @return array 
    */ 
    protected function getOptions() 
    { 
     return [ 
      ['example', null, InputOption::VALUE_OPTIONAL, 'An example option.', null], 
     ]; 
    } 
} 

Ошибка я получаю является следующим:

The "id" argument does not exist. 

У вас есть идеи по его приобретению?

+0

Если я нашел решение, я должен удалить вопрос или лучше оставить его в ответе? – SoldierCorp

+0

Ответьте на вопрос, чтобы ответ был для будущих поколений :) –

+0

Я сделаю, спасибо! – SoldierCorp

ответ

0

Я нашел решение,

Вся структура прекрасно и просто необходимо установить имя атрибута в массиве внутри этой функции:

/** 
* Get the console command arguments. 
* 
* @return array 
*/ 
protected function getArguments() 
{ 
    return [ 
     ['id', InputArgument::REQUIRED, 'An example argument.'], 
    ]; 
} 

Как вы можете видеть, что я заменил 'example' для 'id', так что теперь я могу уловить атрибут id .

Смежные вопросы