public function update($id, $data)
 {
     $hydrator = new ObjectProperty();
     $data = $hydrator->extract($data);
     $orderData = $data;
     unset($orderData['item']);
     $items = $data['item'];
     $tableGateway = $this->repository->getTableGateway();
     try {
         $tableGateway->getAdapter()->getDriver()->getConnection()->beginTransaction();
         $tableGateway->update($orderData, array('id' => $id));
         $this->repository->deleteItem($id);
         foreach ($items as $item) {
             $item['order_id'] = $id;
             $this->repository->insertItem($item);
         }
         $tableGateway->getAdapter()->getDriver()->getConnection()->commit();
         return $data;
     } catch (\Exception $e) {
         $tableGateway->getAdapter()->getDriver()->getConnection()->rollback();
         return 'error';
     }
 }