Laravel 5:在控制台内核的 schedule() 函数中使用 Cache:: 或 DB::

Laravel 5: Using Cache:: or DB:: within the Console Kernel's schedule() function

我正在尝试 运行 在 Laravel 5 中以不同的、用户配置的时间间隔执行 Artisan 控制台命令。我已经构建了控制台命令并有一个数据库(具有 Eloquent 模型)保存 "run frequency" 配置值。

App\Console\Kernel.phpschedule() 函数中,我想从数据库中提取这个值,并 运行 根据这个值在需要时执行命令。

无论是否使用 use DB;,使用 DB::table()... 时,我都会收到 Fatal error: Class 'DB' not found,如果我也尝试使用 Cache::... 函数,也会发生同样的情况。

我假设无法从 App\Console\Kernel.php 文件的 schedule() 函数中访问 IoC 容器。有没有人遇到类似情况并找到了一个优雅的解决方法?

我的简化代码是:

<?php namespace App\Console;

use Cache;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;

class Kernel extends ConsoleKernel {

    /**
     * Define the application's command schedule.
     *
     * @param  \Illuminate\Console\Scheduling\Schedule  $schedule
     * @return void
     */
    protected function schedule(Schedule $schedule)
    {
        $settings = Cache::get('settings');
    }

和错误:

php artisan schedule:run
PHP Fatal error:  Class 'Cache' not found in /home/vagrant/projects/project/dir/api/app/Console/Kernel.php on line 26

如有任何帮助,我们将不胜感激

Taylor 已在 5.0.21 (Git Commit) 中修复此问题,因此遇到相同问题的任何人都可以 运行 composer update 获取最新版本的框架,这将允许你使用

Use DB;

Use Cache;

等照常