Laravel查询构建器返回对象而不是构建器

时间:2017-06-16 19:36:52

标签: php laravel

现在我的Settings.php模型中已经有了这个:

public function scopeFromCache($query)
{
    \Cache::rememberForever('settings', function () use ($query) {
        return $query->first();
    })->first();
}

然后在我boot的{​​{1}}方法中执行此操作:

AppServiceProvider

是否可以在没有$settings = Settings::fromCache()->first(); 的情况下获取设置:

->first()

所以不是返回$settings = Settings::fromCache(); 返回对象吗?

1 个答案:

答案 0 :(得分:1)

要回答您的问题,

我会采取另一种方法,因为你要永远缓存一些东西(设置),我会自定义帮助器来获取这些设置。

创建文件 app / helpers.php ,在 composer.json 添加

1.parse all the entries into a list:
[
{A,B,C}
{C,D,E}
...
]
2.start with the first element/set of the list can called start_entry, {A,B,C} in this case
3.traverse other element in the list and do the following:
     if the intersection of the element and start_entry is not empty
          start_entry = start_entry union with the element
          remove element from the list
4.with the updated start_entry, traverse the list again until there is not new update

in" autoload"阵列。

现在忘记使用范围,并创建方法(函数)来使用缓存,就像你现在正在做的那样:

"files": [
    "app/helpers.php"
]

现在项目中的任何地方都只需拨打if ( ! function_exists('settings')) { function settings() { return Cache::rememberForever('settings', function () { return Settings::first(); }); } } 即可获得您的对象。