2014-10-19 23 views
0

我正在使用ZfcBase更新表,當我通過實體並提取原始數據時它獲取實體Id(這是主鍵),但我不想包含id爲更新,什麼是排除實體id(主鍵),以便它不會得到sql語句的適當方式?取消設置主鍵更新ZfcBase

感謝

回答

0

這是我做的,我傳遞一個簡單的陣列,而不是對象。

$entity = array('authorized' => $authorize); 
    $where = array('id' => $id); 
    $mapper->update($entity , $where); 

這是在ZfcBase AbstractDbMapper映射器

public function update($entity, $where = null, $tableName = null, Hydrator $hydrator = null) 
{ 
    $hydrator = $hydrator ?: $this->getHydrator(); 

    if (!$where) { 
     $where = array('order_id' => $entity->getId()); 
    } 

    return parent::update($entity, $where, $this->getTableName(), $hydrator); 
} 

存在是獲取呼籲更新

$rowData = $this->entityToArray($entity, $hydrator); 


protected function entityToArray($entity, HydratorInterface $hydrator = null) 
{ 
    if (is_array($entity)) { 
     return $entity; // cut down on duplicate code 
    } elseif (is_object($entity)) { 
     if (!$hydrator) { 
      $hydrator = $this->getHydrator(); 
     } 

     return $hydrator->extract($entity); 
    } 
    throw new Exception\InvalidArgumentException('Entity passed to db mapper should be an array or object.'); 
} 

正如你可以看到這個方法的方法可以接受和對象或數組。我剛剛發送了一個普通的數組。