Zend framework2 取消设置更新ZfcBase的主键

Zend framework2 取消设置更新ZfcBase的主键,zend-framework2,Zend Framework2,我正在使用ZfcBase更新一个表,当我传递实体并提取原始数据时,它会得到实体Id,这是主键,但我不想包含用于更新的Id,有什么合适的方法排除实体Id主键,这样它就不会出现在sql语句中 谢谢这就是我所做的,我只是传递了一个普通数组而不是对象 $entity = array('authorized' => $authorize); $where = array('id' => $id); $mapper->update($entity , $where)

我正在使用ZfcBase更新一个表,当我传递实体并提取原始数据时,它会得到实体Id,这是主键,但我不想包含用于更新的Id,有什么合适的方法排除实体Id主键,这样它就不会出现在sql语句中


谢谢

这就是我所做的,我只是传递了一个普通数组而不是对象

    $entity = array('authorized' => $authorize);
    $where = array('id' => $id);
    $mapper->update($entity , $where);
这是地图绘制者

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);
}
在ZfcBase AbstractDbMapper中,有一个方法在更新时获取调用

$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.');
}
如您所见,此方法接受and对象或数组。我刚刚发送了一个普通数组