2016-06-15 9 views
0

Eloquentモデルでキャッシュ機能を使用する必要がありますが、キャッシュ・ファサードを使用したくありません。それはではありません。は、コンストラクタを介して注入することができます。Eloquentモデルの依存関係としてキャッシュを注入する5.2

どのように私はファサードを使用せずにこれを行うでしょうか?ベストプラクティスとは何ですか?

+1

はあなたが何をしようとして依存します。 Eloquentモデルは、データを取得して永続化するためのもので、キャッシュのようなものについては知っているべきではありません。代わりに、Eloquentモデルをラップするサービスクラスを作成しますが、必要なキャッシングはすべて行います。 –

+0

これはネストされたセットモデルであり、要求データに応じてさまざまな/多様なロケールとスラッグ属性を持っています。これらの属性をキャッシュすることは、スピードを大幅に改善しますが、モデル内でのみ行うことができます。私は、サービスを受けることがきれいな解決であることに同意します。ありがとう。 – mauricehofman

答えて

1

これを試してみてください:

use Illuminate\Database\Eloquent\Model; 
use Illuminate\Cache\Repository as Cache; 

class MyModel extends Model { 
    public function myMethod(Cache $cache) { 
     $cache->put('foo', 'bar', 1000); 
    } 
} 

はあなたがここにすべてのファサードの具体的な実装のためのリストを見つけることができます。

https://laravel.com/docs/5.2/facades#facade-class-reference

+0

このように注入すると残念ながら機能しません(属性の場合)。メソッドがあるとき、私はこのメソッドをParamとしてCacheで呼び出すことができますが、それは私がやりたいことではありません。 – mauricehofman

関連する問題