Allow non integer ids in Entity Mapper

Signed-off-by: Joas Schilling <coding@schilljs.com>
This commit is contained in:
Joas Schilling 2020-02-26 14:44:45 +01:00
parent 0cf76aa2e8
commit 9c9f8fa5f7
No known key found for this signature in database
GPG Key ID: 7076EA9751AACDDA
1 changed files with 7 additions and 2 deletions

View File

@ -89,9 +89,11 @@ abstract class QBMapper {
public function delete(Entity $entity): Entity { public function delete(Entity $entity): Entity {
$qb = $this->db->getQueryBuilder(); $qb = $this->db->getQueryBuilder();
$idType = $this->getParameterTypeForProperty($entity, 'id');
$qb->delete($this->tableName) $qb->delete($this->tableName)
->where( ->where(
$qb->expr()->eq('id', $qb->createNamedParameter($entity->getId())) $qb->expr()->eq('id', $qb->createNamedParameter($entity->getId(), $idType))
); );
$qb->execute(); $qb->execute();
return $entity; return $entity;
@ -126,6 +128,7 @@ abstract class QBMapper {
$qb->execute(); $qb->execute();
if($entity->id === null) { if($entity->id === null) {
// When autoincrement is used id is always an int
$entity->setId((int)$qb->getLastInsertId()); $entity->setId((int)$qb->getLastInsertId());
} }
@ -191,8 +194,10 @@ abstract class QBMapper {
$qb->set($column, $qb->createNamedParameter($value, $type)); $qb->set($column, $qb->createNamedParameter($value, $type));
} }
$idType = $this->getParameterTypeForProperty($entity, 'id');
$qb->where( $qb->where(
$qb->expr()->eq('id', $qb->createNamedParameter($id, IQueryBuilder::PARAM_INT)) $qb->expr()->eq('id', $qb->createNamedParameter($id, $idType))
); );
$qb->execute(); $qb->execute();