0

Laravel や CodeIgniter などの PHP フレームワークを使い始めています。そして、私は基本を理解したと思います。

これが私の例です。

認証ユーザーの後、次のように移動することを認めます。

mysite.fr/username/

次に、このユーザーが書いたすべての本をデータベースから読み込みます。

so the username/index controllers call the books models.

次に、ユーザーはフィルター ボタンをクリックして KIDS の本のみを表示できるため、URI は次のようになります。

mysite.fr/username/books/kids

ここでは、books モデルが新しいクエリを作成して、category = "KIDS" であるすべての本を検索します。

以前にすべての本をすでにロードしているので、これは悪いと思います! したがって、新しいクエリを作成する必要はなく、Books オブジェクトにフィルターを適用するだけです。

モデルをコントローラーに保存し、オブジェクト全体を再作成することなく別のコントローラーからアクセスする方法はありますか?

私がやりたいことは次のとおりです。

username/index
    Books already loaded ? call the view with Book object : make the query
username/books/categories
    Books already loaded ? call the view for categories : make the query for this categories

それは OOP の精神にまったく沿わないかもしれませんが、なぜ既に持っている情報を求めに行くのでしょうか??

それを行う唯一の方法は、モデルをファイルに保存することです...しかし、実際には効率的ではありません。

あなたの助けに感謝し、私の母国語ではなく私の英語を許してください...

4

1 に答える 1

3

laravel では、結果をキャッシュするだけです。または、クエリの最後でメソッドをCache::put($key, $value), Cache::get($key).チェーンするだけで、クエリ キャッシュを使用できます。->remember()

チェックアウトキャッシング チェックアウトクエリ キャッシング

于 2013-10-28T09:10:00.507 に答える