public function show(Order $order, ReviewManager $reviewManager) { $items = $this->orderManager->getOrderItemRepository()->whereOrder($order)->findAll(); $reviews = $reviewManager->getReviewRepository()->whereOrder($order)->scopes('on', Product::class)->findAll()->keyBy('reviewable_id'); // associate each item with product review if exists $items->map(function ($item) use($reviews) { if ($reviews->has($item->id)) { $item->review = $reviews->get($item->product_id); } return $item; }); return $this->view('order::{account}.orders.show', compact('order', 'items')); }