我使用ZfcBase来更新表,当我传递实体并提取原始数据时,它获得实体Id(这是主键),但我不想包含更新的id,是否适当排除实体id(主键)的方法,以便它不会在sql语句中获取?
由于
答案 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.');
}
如您所见,此方法接受对象或数组。我刚发了一个简单的阵列。