Php 重写雄辩的模型where()方法

Php 重写雄辩的模型where()方法,php,laravel,inheritance,eloquent,Php,Laravel,Inheritance,Eloquent,我试图缓存我的模型以避免重复的数据库查找。我能够轻松地覆盖find方法,如下所示: 第一个问题是无限递归(某个东西一遍又一遍地调用自己,直到它在256级递归后出错);第二个是基于匿名函数(aka)不能被序列化(至少在默认情况下不能,以防止代码注入) 很可能Laravel框架正在调用一个方法,而不一定是您的代码。例如,在更新时侦听Model,然后尝试在其中保存Model。在这种情况下,必须使用DB而不是Model,以避免创建无限递归。我最终能够用以下简单代码复制递归错误:

我试图缓存我的模型以避免重复的数据库查找。我能够轻松地覆盖
find
方法,如下所示:


第一个问题是无限递归(某个东西一遍又一遍地调用自己,直到它在256级递归后出错);第二个是基于匿名函数(aka)不能被序列化(至少在默认情况下不能,以防止代码注入)


很可能Laravel框架正在调用一个方法,而不一定是您的代码。
例如,在更新时侦听
Model
,然后尝试在其中保存
Model
。在这种情况下,必须使用
DB
而不是
Model
,以避免创建无限递归。

我最终能够用以下简单代码复制递归错误: