【发布时间】:2022-01-25 10:14:00
【问题描述】:
我正在使用 Redis 来缓存我的应用程序的不同部分。我的目标是在用户未登录时不进行数据库查询,因为应用的内容不会定期更新。
我在控制器中缓存存档查询,但是当我在控制器中键入提示模型时,模型会从数据库中检索,然后传递给控制器:
// My route
Route::get('page/{page:id}', [ PageController::class, 'show' ] );
// My controller
public function show ( Page $page ) {
// Here, the $page will be the actual page model.
// It's already been queried from the database.
}
我要做的是先尝试从缓存中解析页面,然后如果缓存中不包含此项,则查询数据库。如果我放弃 Page 类型提示,我会得到想要的结果(只有 id 被传递给控制器)但是我将失去 IoC、自动 ModelNotFoundException 等的好处。
我遇到过一些想法,例如将页面模型绑定到回调,然后解析 request(),但这似乎是个坏主意。
有什么方法可以正确实现这一点吗?我注意到 Laravel eloquent 没有 fetching 事件,这对于这个目的来说是完美的。
【问题讨论】:
标签: php laravel caching eloquent