Php Larvel 5:在控制台内核中使用Cache::或DB::x27;s schedule()函数
我试图在Laravel5中以用户配置的不同时间间隔运行Artisan控制台命令。我已经构建了console命令,并且有一个数据库(具有雄辩的模型)保存“运行频率”配置值 在Php Larvel 5:在控制台内核中使用Cache::或DB::x27;s schedule()函数,php,laravel,laravel-5,Php,Laravel,Laravel 5,我试图在Laravel5中以用户配置的不同时间间隔运行Artisan控制台命令。我已经构建了console命令,并且有一个数据库(具有雄辩的模型)保存“运行频率”配置值 在App\Console\Kernel.php的schedule()函数中,我想从数据库中提取这个值,并根据这个值在需要时运行命令 我收到一个致命错误:在使用DB::table()…时,无论是否使用use DB,都找不到类“DB”,如果我尝试使用缓存::…函数也会发生同样的情况 我假设无法从App\Console\Kernel.
App\Console\Kernel.php的schedule()
函数中,我想从数据库中提取这个值,并根据这个值在需要时运行命令
我收到一个致命错误:在使用DB::table()…
时,无论是否使用use DB,都找不到类“DB”
,如果我尝试使用缓存::…
函数也会发生同样的情况
我假设无法从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');
}
任何帮助都将不胜感激泰勒在5.0.21()中修复了此问题,因此遇到相同问题的任何人都可以运行composer update
,以获得允许您使用的最新版本的框架
使用DB代码>
使用缓存代码>
etc与往常一样您是否尝试过使用light\Support\Facades\Cache作为缓存代码>?是的,没有什么乐趣,出现的错误是PHP致命错误:在null上调用成员函数get()
我也尝试过$this->app->make('cache')等,但没有乐趣这很奇怪,我想应该可以使用缓存。很抱歉打扰您,但是类似于$cache=new-illumb\Support\Facades\cache()代码>也不起作用?谢谢你的建议,但恐怕结果是一样的。你让我想到尝试$cache=new\lightlight\cache\CacheManager($this->app)
与设置CacheManager一样有效,但随后我收到了config
的ReflectionException
,因此我认为app/IoC在appCache的这个阶段不在全局名称空间中,您是否尝试过使用$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