フローとして、
1.ordersテーブルから全件取得。 2.全件取得したordersのuser_idを配列で取得 3.配列で取得したuser_idをforeachで絞り込み、再度ordersテーブルから取得。 4.3.のデータを使用して処理を実行
ordersテーブル id //primaryKey user_id created_at updated_at
PHP
1//1 2$orders = DB::table('orders')->get(); 3//2 4$userIds = $orders->map(function ($item) { 5 return $item->user_id; 6 })->unique()->toArray(); 7//3 8foreach( $userIds as $userId) { 9 $ordersByUserId = DB::table('orders')->where('user_id', '=', $userId)->get(); 10 //4 ~省略~ 11 . 12 . 13 . 14}
1.と3.の処理が無駄にDBへアクセスしている状態になってしまっています。
1.で全件取得したデータから同じ形のデータを作成するような処理に変更できないでしょうか。
最終的には3.のデータ($ordersByUserId
)を使用したいです。
情報不足等ありましたらご指摘をよろしくお願いします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/04/23 05:52