簡體   English   中英

使用load('relation')和緩存

[英]Using load('relation') with caching

我知道你可以通過附加->remember($minutes)來緩存查詢。

但是,在現有Eloquent結果上使用加載時,這不起作用。 這是因為load不返回querybuilder但直接執行它。

假設您要加載用戶的朋友:

$user=Auth::user();
$user->load('friends');  // How to cache these results ?

我該如何緩存這些?

您必須將User對象轉換為QueryBuilder才能訪問 - > remember()方法Try

    User::with('friends')->where('id', Auth::user()->id)->remember()->first();

您無法單獨使用此代碼。 但是,您有兩種選擇:

1)將代碼包裝在某個地方的包裝器中(基本上抽象掉這個調用),它首先執行緩存檢查,如果緩存的項目不存在或已過期,則運行這些查詢。

2)擴展Auth庫,特別是其EloquentUserProvider類,並修改retrieveById()方法執行的查詢。

你可以在Chris Fidao的Implementing Laravel中看到一種抽象方法和緩存的方法。 隨附的書很方便!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM