取消设置更新ZfcBase的主键

时间:2014-10-19 00:45:57

标签: zend-framework2

我使用ZfcBase来更新表,当我传递实体并提取原始数据时,它获得实体Id(这是主键),但我不想包含更新的id,是否适当排除实体id(主键)的方法,以便它不会在sql语句中获取?

由于

1 个答案:

答案 0 :(得分:0)

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

    $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.');
}

如您所见,此方法接受对象或数组。我刚发了一个简单的阵列。