我有一个非常,非常简单的查询查询与口才耗尽允许的内存限制
select *
from `users`
where (`active` = 1 and `newsletter` = 1) and (`terminated` = 0 or (`terminated` = 1 and `newsletter_terminated` = 1));
我有这样的雄辩构建它(上面的查询获取输出时,我使其与toSql()
$recipients = User::where([
'active' => 1,
'newsletter' => 1
])->where(function ($query) {
$query->where('terminated', 0)
->orWhere(function ($query){
$query->where('terminated', 1)
->where('newsletter_terminated', 1);
});
})->get();
但是,当我执行这个脚本,我发现了错误
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 32 bytes) in /xxx/eloquent/vendor/illuminate/database/Illuminate/Database/Connection.php on line 303
当我写SP get
方法中的特殊列,如get(['id']);
,它的工作原理没有问题。但我仍然不明白为什么它不起作用。似乎有内存泄漏,但在哪里?
当我在SQL客户端执行查询时,查询被完成withing 3毫秒,所以它看起来并不像有太多的数据回事。不幸的是,我没有安装流浪盒上的xdebug,所以我目前无法获取堆栈跟踪。
什么,当你使用get([ '字段1', '字段2',...])发生;为表中的所有列? –
不幸的是,这会返回相同的错误 – Musterknabe
查询返回多少条记录? –