Laravel 5: 从命令获取属性
Laravel 5: Get attribute from Command
我正在使用 Commands 和 Scheduler,但有些东西我无法获取,是命令的 argument/option。
控制器
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.
你知道如何获得它吗?
我找到了解决方案,
所有的结构都很好,只需要在这个函数内的数组中设置属性的名称:
/**
* Get the console command arguments.
*
* @return array
*/
protected function getArguments()
{
return [
['id', InputArgument::REQUIRED, 'An example argument.'],
];
}
如您所见,我将 'example' 替换为 'id',所以现在我可以捕获 id
属性。
我正在使用 Commands 和 Scheduler,但有些东西我无法获取,是命令的 argument/option。
控制器
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.
你知道如何获得它吗?
我找到了解决方案,
所有的结构都很好,只需要在这个函数内的数组中设置属性的名称:
/**
* Get the console command arguments.
*
* @return array
*/
protected function getArguments()
{
return [
['id', InputArgument::REQUIRED, 'An example argument.'],
];
}
如您所见,我将 'example' 替换为 'id',所以现在我可以捕获 id 属性。