STI ::find() 在控制器中失败但在修补程序中成功

STI ::find() fails in controller but succeeds in tinker

我正在使用 MannikJ/laravel-sti 但以下代码在 tinker 和控制器中有不同的行为(假设 larevel-sti 文档中的定义, 类 RootSub1Sub2):

Root::find(1234)

在 tinker 中,它正确地 returns Sub1 的一个实例。但是在控制器中,它 returns null.

如果我将代码替换为:

,我将在控制器中获得正确的实例
Sub1::find(1234)

感谢维护者(参见 issue #1),我们发现问题在于我们在对象中使用了构造函数,但 laravel-sti 的 trait 也是如此。构造函数是 PHP 中的一个已知问题,具有特征…