public function find($id) { $resultSet = $this->tableGateway->select(['id' => (int) $id]); if ($resultSet->count() == 1) { $hydrator = new ClassMethods(); $hydrator->addStrategy('items', new OrderItemHydratorStrategy(new ClassMethods())); $order = $resultSet->current(); $client = $this->clientsTableGateway->select(['id' => $order->getClientId()])->current(); $sql = $this->orderItemTableGateway->getSql(); $select = $sql->select(); $select->join('products', 'order_items.product_id = products.id', ['product_name' => 'name'])->where(['order_id' => $order->getId()]); $items = $this->orderItemTableGateway->selectWith($select); $order->setClient($client); foreach ($items as $item) { $order->addItem($item); } $data = $hydrator->extract($order); return $data; } return false; //return $resultSet->current(); }