Laravel Command使用DB :: select

时间:2014-04-22 18:59:10

标签: laravel

我正在尝试创建一个可以使用工匠工具运行的Command类。我可以从shell中获取命令,但是当我使用此代码时:

$results = DB::select('select * from users where id = ?', array(1));

它给了我一个错误“用户'root'@ localhost'的访问被拒绝。”

如果我从常规控制器运行相同的代码,它就可以工作。

在使用像DB这样的类之前,是否需要在命令内部运行作为前驱的引导程序?

更新

通过seblaze的反馈,我能够通过覆盖工匠的环境来完成这项工作,如下所示:

php artisan command:name --env=local

1 个答案:

答案 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();
    }

}