DbObject: allow to change primary key (not autoinc)

This commit is contained in:
Thomas Gelf 2015-11-30 21:03:46 +01:00
parent 2b9848f9e2
commit 41d6f47752

View File

@ -283,8 +283,8 @@ abstract class DbObject
return $this;
}
if ($key === $this->getKeyName() && $this->hasBeenLoadedFromDb()) {
throw new IE('Changing primary key is not allowed');
if ($key === $this->getAutoincKeyName()) {
throw new IE('Changing autoincremental key is not allowed');
}
return $this->reallySet($key, $value);
@ -389,7 +389,7 @@ abstract class DbObject
{
$props = array();
foreach (array_keys($this->modifiedProperties) as $key) {
if ($key === $this->keyName || $key === $this->autoincKeyName) continue;
if ($key === $this->autoincKeyName) continue;
$props[$key] = $this->properties[$key];
}
return $props;
@ -768,6 +768,12 @@ abstract class DbObject
}
}
return implode(' AND ', $where);
} else {
if ($this->hasBeenLoadedFromDb()) {
return $this->db->quoteInto(
sprintf('%s = ?', $key),
$this->loadedProperties[$key]
);
} else {
return $this->db->quoteInto(
sprintf('%s = ?', $key),
@ -775,6 +781,7 @@ abstract class DbObject
);
}
}
}
protected function getLogId()
{