2014-10-04 5 views
1

Я пытаюсь обновить строку в базе данных, используя платформу Apigility на основе ZF2.ZF2 aka Обновление Apigility базы данных SQL базы данных

Я вижу, что строка существует, извлекает ее содержимое и обновляет объект. Но когда я пытаюсь сделать $table->update($arrayOfRowData);, я получаю исключение;

Документация о том, как использовать Update(), является немного редкой. Мне нужно поставить предложение where=? ? Мне нужно иметь где матч дизъюнкции с ALL первичного ключа таблицы Do (первичный ключ 3 столбца)

try { 
    // if an entry already exists, update it 
    $existingRow = $this->currentEntryExists($ff_user_id, $subvalue); 
    if($existingRow != false){ 

     $fieldType = $this->transformer->mapField($key); 
     $existingRow[$fieldType] = $subvalue['value']; 
     $this->update($existingRow, $where = array('field_id' => $existingRow['field_id'], 'user_id' => $user_id, 'field_date' => $subvalue['dateTime'])); 
    }else{ 
     $fieldType = $this->transformer->mapField($key); 
     $dataArray = array('user_id' => $user_id, 
          'field_date' => $subvalue['dateTime'], 
          $fieldType => $subvalue['value']); 
     $result = $this->insert($dataArray); 
    } 
} catch (Exception $e) { 
    $logger = $this->getServicesLogger(); 
    $logger->err($e); 
    throw $e; 
} 

Исключение брошенного:

"type": "http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html", 
"title": "Internal Server Error", 
"status": 500, 
"detail": "Invalid magic property access in Zend\\Db\\TableGateway\\AbstractTableGateway::__get()" 

ответ

0

Оказывается, я пытался использовать поле, которое не было в классе, и об этом сообщает Zend Framework.

protected function getServicesLogger() 
{ 
    if (!$this->logger) { //this field didn't exist 
     $this->logger = new ApiLogger(get_class($this)); 
    } 
    return $this->logger; 
}