2017-06-16 4 views
0

Gerade jetzt muss ich dies in meinem Settings.php Modell:Laravel Query Builder Rückgabeobjekt statt builder

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

Dann in der boot Methode von meinem AppServiceProvider ich dies tun:

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

Ist es ist möglich, die Einstellungen ohne die ->first() wie folgt zu erhalten:

$settings = Settings::fromCache(); 

Also anstatt eine query builder zurückgeben das Objekt zurückgeben?

+0

Aber ist das nicht das, was die 'first()' Methode macht, indem sie das erste Objekt aus der Collection anstatt des Abfrage-Generators zurückgibt? Warum willst du das nicht tun? – codedge

Antwort

1

Um Ihre Frage zu beantworten, keine.


Ich würde einen anderen Weg nehmen, da Sie etwas das Caching für immer (Einstellungen), würde ich benutzerdefinierte Helfer machen Sie diese Einstellungen zu erhalten.

erstellen So Datei app/helpers.php, in composer.json

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

in "Autoload" Array hinzufügen.

nun über die Verwendung von Umfang vergessen und create-Methode (Funktion) Cache zu verwenden, so wie du jetzt tun:

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

Jetzt überall in Ihrem Projekt settings() einfach anrufen und Sie Ihr Objekt bekommen.

+0

Viel besser danke. Kann ich '' 'settings()' '' in meinen Ansichten verwenden oder muss ich es in '' View :: composer''' hinzufügen? – Jenssen

+0

Sie müssen es nicht zu Komponisten hinzufügen, verwenden Sie es überall wo Sie möchten, es ist jetzt globale Funktion, können Sie feuern tinker ('$ php Handwerker Tinker') und verwenden Sie es dort auch. – Kyslik

+0

Danke wirklich hilfreich! – Jenssen