如何修复laravel 5.2此错误"达到'100'的最大功能嵌套级别,正在中止!"?

Aya*_*hah 11 php laravel

我正在尝试从laravel自动生成的登录/注册验证模块重置密码.当我点击重置按钮时,它会给我这个错误 FatalErrorException in ClassLoader.php line 344: Maximum function nesting level of '100' reached, aborting!

我搜索了它并找到了一个接受的答案,但是这个答案对我不起作用我遵循了指令.可以任何一个人指导我这是laravel错误或wamp?以及如何解决它.我想要感激.

Yam*_*raf 22

这通常是因为您通过$with属性之类的东西一次加载来自两个模型的关系。

假设一个CategoryhasManyProduct和一个ProductBeingsTo a Category

如果在两个模型中默认加载关系,如下所示: in Productmodel $with=['category'], in Categorymodel$with=['products']

这将导致这种无限嵌套。所以,为了解决这个负载关系,只要需要。

这也可能发生在 GlobalScopes 上,这个想法类似于$with财产。

  • 这应该是公认的答案。这样就解决了根本原因。 (3认同)

小智 19

问题是由默认的xdebug.max_nesting_level引起的,该值为100.

现在的解决方法是将xdebug.max_nesting_level增加到某个级别,例如200或300或400.

我通过bootstrap/autoload.php在Laravel 5.1中添加下面的行来将xdebug.max_nesting_level增加到120来修复我的问题.

ini_set('xdebug.max_nesting_level', 120);
Run Code Online (Sandbox Code Playgroud)

............

define('LARAVEL_START', microtime(true));
Run Code Online (Sandbox Code Playgroud)