なんも気にせず全件findしてぐるぐる処理しようとしていたら Allowed memory size
で落ちた
$query = $this->Table->find();
foreach ($query as $entity) {
// いろんな処理
// 何千件か処理したところで突然の死!!
}
1レコードでかいからかなーとか思っていたけどそれも違う。
foreach
のなか全てコメントアウトしても一緒…
なんでや!! と思っていたら公式にちゃんと載ってた。
「結果をキャッシュしつつ イテレートします」と…
http://book.cakephp.org/3.0/ja/orm/retrieving-data-and-resultsets.html#id15
クエリーが遅延評価されるとこだけ見て勘違いしていた。
http://book.cakephp.org/3.0/ja/orm/query-builder.html#id6