我正在尝试创建一个可以使用工匠工具运行的Command类。我可以从shell中获取命令,但是当我使用此代码时:
$results = DB::select('select * from users where id = ?', array(1));
它给了我一个错误“用户'root'@ localhost'的访问被拒绝。”
如果我从常规控制器运行相同的代码,它就可以工作。
在使用像DB这样的类之前,是否需要在命令内部运行作为前驱的引导程序?
更新
通过seblaze的反馈,我能够通过覆盖工匠的环境来完成这项工作,如下所示:
php artisan command:name --env=local
答案 0 :(得分:1)
目前,这在默认的Laravel安装中没有任何问题。
请检查: 你没有overwritten default configuration 并且您在配置中设置了正确的用户/密码。
使用数据库运行artisan命令不应该是任何问题。
<?php
use Illuminate\Console\Command;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Input\InputArgument;
class CheckDB extends Command {
/**
* The console command name.
*
* @var string
*/
protected $name = 'checkmydb:db';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Check DB.';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return mixed
*/
public function fire()
{
$results = DB::select('select * from users where id = ?', array(1));
$this->info($results[0]->email);
}
/**
* Get the console command arguments.
*
* @return array
*/
protected function getArguments()
{
return array();
}
/**
* Get the console command options.
*
* @return array
*/
protected function getOptions()
{
return array();
}
}