【发布时间】:2014-08-05 13:32:17
【问题描述】:
我今天尝试工作,但是我被这个错误打断了:
[Tue Aug 05 09:08:48 2014] [error] [client 93.103.209.208] PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 130968 bytes) in /var/www/dev/vendor/laravel/framework/src/Illuminate/Database/Eloquuent/Model.php on line 643
导致错误的控制器/方法:
public function show($id)
{
return $this->layout->content = View::make('users.show', array(
'user' => User::find($id)
));
}
但是,如果我将User::find($id) 替换为DB::table('users')->where('id', '=', $id)->first();,它就像一个魅力。 Eloquent 发生了什么?
我尝试将 php.ini 中用于 apache 和 cli 的 memory_limit 增加到 200-230M,但没有帮助。我还尝试将其设置为 -1 以查看它是否可以工作,但没有,我只是没有从服务器得到任何响应。是的,我确实在每次更改后都重新启动了 apache。
原因
问题是由于我的 User 模型中的关联方法与它自身有关。基本上在我的用户类中,我有User { public function user() { return $this->hasOne('User'); } },它创建了一个循环。
【问题讨论】:
-
@deceze 我同意这一点。
-
您是否在该模型上设置了
with = ['user'];? -
@deczoI 定义了与其自身模型相关的关系。
标签: php apache laravel eloquent