環境
- php7.1
- Laravel5.5
- Postgresql 9.6.3
- 想定のデータ最大件数:150万件
- php.iniのmemory_limit = 128M
概要
現在Groupby句を用いたPaginateの実装を行っています。
php
1$query = SomethingModel::query(); 2 3$query->groupBy( 4 'min(created_at)', 5 'unit', 6 'something_id', 7 'something_name', 8 'p_code' 9); 10 11$result = $query->orderBy('created_at','desc')->paginate(10);
公式リファレンスでは
Note: 現在groupBy文を使用したペジネーション操作は、Laravelで効率よく実行できません。groupByを使用したペジネーションを使用する必要がある場合はデータベースクエリを実行し、その結果を元にペジネーターを自前で作成してください。
との記述があり、試してみると下記のようなメモリエラーでプログラムが落ちてしまいます。
Allowed memory size of 134217728 bytes exhausted (tried to allocate 16777224 bytes)
環境の制約があり、サーバー側の設定はいじれないのでプログラム側で対処できればと考えております。Groupby句を用いたPaginateを実装する際、何かいい方法がありましたらご教示いただけませんでしょうか?
よろしくお願いいたします!
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/31 03:31