From 3df89f9df257b54675c3f846ff277a449654a08a Mon Sep 17 00:00:00 2001 From: Joe Nahmias Date: Fri, 8 Jul 2022 17:38:45 -0400 Subject: [PATCH] fix(mssql): when updating an object by id, omit the id itself It is a useless update and id is an identity column in MSSQL, which is not updatable and throws an error if you try. This affects the following seven objects (Models): - Category - CustomFilter - Group - Project - Subtask - TaskExternalLink - User --- app/Model/CategoryModel.php | 4 +++- app/Model/CustomFilterModel.php | 4 +++- app/Model/GroupModel.php | 4 +++- app/Model/ProjectModel.php | 4 +++- app/Model/SubtaskModel.php | 4 +++- app/Model/TaskExternalLinkModel.php | 4 +++- app/Model/UserModel.php | 4 +++- 7 files changed, 21 insertions(+), 7 deletions(-) diff --git a/app/Model/CategoryModel.php b/app/Model/CategoryModel.php index 441cc4a71..798c8a9bb 100644 --- a/app/Model/CategoryModel.php +++ b/app/Model/CategoryModel.php @@ -170,7 +170,9 @@ class CategoryModel extends Base */ public function update(array $values) { - return $this->db->table(self::TABLE)->eq('id', $values['id'])->save($values); + $updates = $values; + unset($updates['id']); + return $this->db->table(self::TABLE)->eq('id', $values['id'])->save($updates); } /** diff --git a/app/Model/CustomFilterModel.php b/app/Model/CustomFilterModel.php index 7eb02a01f..a9c5aae53 100644 --- a/app/Model/CustomFilterModel.php +++ b/app/Model/CustomFilterModel.php @@ -85,9 +85,11 @@ class CustomFilterModel extends Base */ public function update(array $values) { + $updates = $values; + unset($updates['id']); return $this->db->table(self::TABLE) ->eq('id', $values['id']) - ->update($values); + ->update($updates); } /** diff --git a/app/Model/GroupModel.php b/app/Model/GroupModel.php index ca15d4097..6fd9c53e8 100644 --- a/app/Model/GroupModel.php +++ b/app/Model/GroupModel.php @@ -132,7 +132,9 @@ class GroupModel extends Base */ public function update(array $values) { - return $this->db->table(self::TABLE)->eq('id', $values['id'])->update($values); + $updates = $values; + unset($updates['id']); + return $this->db->table(self::TABLE)->eq('id', $values['id'])->update($updates); } /** diff --git a/app/Model/ProjectModel.php b/app/Model/ProjectModel.php index 3cff12180..82aae2220 100644 --- a/app/Model/ProjectModel.php +++ b/app/Model/ProjectModel.php @@ -483,8 +483,10 @@ class ProjectModel extends Base $this->helper->model->convertIntegerFields($values, array('priority_default', 'priority_start', 'priority_end', 'task_limit')); + $updates = $values; + unset($updates['id']); return $this->exists($values['id']) && - $this->db->table(self::TABLE)->eq('id', $values['id'])->save($values); + $this->db->table(self::TABLE)->eq('id', $values['id'])->save($updates); } /** diff --git a/app/Model/SubtaskModel.php b/app/Model/SubtaskModel.php index cd4792b6e..ab9749412 100644 --- a/app/Model/SubtaskModel.php +++ b/app/Model/SubtaskModel.php @@ -237,7 +237,9 @@ class SubtaskModel extends Base public function update(array $values, $fireEvent = true) { $this->prepare($values); - $result = $this->db->table(self::TABLE)->eq('id', $values['id'])->save($values); + $updates = $values; + unset($updates['id']); + $result = $this->db->table(self::TABLE)->eq('id', $values['id'])->save($updates); if ($result) { $subtask = $this->getById($values['id']); diff --git a/app/Model/TaskExternalLinkModel.php b/app/Model/TaskExternalLinkModel.php index 220b9c6f1..4d3488fdc 100644 --- a/app/Model/TaskExternalLinkModel.php +++ b/app/Model/TaskExternalLinkModel.php @@ -84,7 +84,9 @@ class TaskExternalLinkModel extends Base public function update(array $values) { $values['date_modification'] = time(); - return $this->db->table(self::TABLE)->eq('id', $values['id'])->update($values); + $updates = $values; + unset($updates['id']); + return $this->db->table(self::TABLE)->eq('id', $values['id'])->update($updates); } /** diff --git a/app/Model/UserModel.php b/app/Model/UserModel.php index 32d0c888e..22d057ced 100644 --- a/app/Model/UserModel.php +++ b/app/Model/UserModel.php @@ -290,7 +290,9 @@ class UserModel extends Base public function update(array $values) { $this->prepare($values); - $result = $this->db->table(self::TABLE)->eq('id', $values['id'])->update($values); + $updates = $values; + unset($updates['id']); + $result = $this->db->table(self::TABLE)->eq('id', $values['id'])->update($updates); $this->userSession->refresh($values['id']); return $result; }