2017-06-16 81 views
0

現在我已經得到了這個在我Settings.php模型:Laravel查詢構建器返回的對象,而不是建設者

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

然後在boot方法從我AppServiceProvider我這樣做:

$settings = Settings::fromCache()->first(); 

是有可能得到如下設置:

$settings = Settings::fromCache(); 

因此,而不是返回query builder返回對象?

+0

但是,不是說'first()'方法正在做什麼,從集合而不是查詢生成器返回第一個對象?你爲什麼不想這樣做? – codedge

回答

1

要回答你的問題,請撥打


我會採取另一種方法,因爲你永遠緩存一些東西(設置),我會讓自定義幫助器讓你得到這些設置。

因此,創建文件應用程序/ helpers.php,在composer.json在 「自動加載」 陣列添加

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

現在忘了使用範圍,創建方法(功能)使用緩存,就像你現在做的:

if (! function_exists('settings')) { 
    function settings() 
    { 
     return Cache::rememberForever('settings', function() { 
      return Settings::first(); 
     }); 
    } 
} 

現在,在你的項目中的任何地方只需調用settings(),你會得到你的對象。

+0

非常感謝。我可以在我的視圖中使用'''settings()''aswel,還是必須將它添加到''View :: composer'''中? – Jenssen

+0

您不必將它添加到作曲家,在任何你喜歡的地方使用它現在是全局函數,你可以啓動修補程序('$ php artisan tinker')並在那裏使用它。 – Kyslik

+0

非常感謝! – Jenssen

相關問題