[英]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.