From bfaf50ce041a2c80f19467b7c99da1a8de8fa13c Mon Sep 17 00:00:00 2001 From: lorddeveloper Date: Thu, 13 Oct 2022 01:44:35 +0330 Subject: [PATCH] Improved #805 --- src/masoniteorm/query/QueryBuilder.py | 35 +++++++++++++++++++++++---- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/src/masoniteorm/query/QueryBuilder.py b/src/masoniteorm/query/QueryBuilder.py index 9ac9ddf1..9b68766f 100644 --- a/src/masoniteorm/query/QueryBuilder.py +++ b/src/masoniteorm/query/QueryBuilder.py @@ -1487,19 +1487,31 @@ def increment(self, column, value=1): if model and model.is_loaded(): self.where(model.get_primary_key(), model.get_primary_key_value()) - additional.update({model.get_primary_key(): model.get_primary_key_value()}) + additional.update({ + model.get_primary_key(): model.get_primary_key_value(), + column: int(model.__original_attributes__.get(column, 0)) + abs(value) + }) + model.fill(additional) self.observe_events(model, "updating") self._updates += ( UpdateQueryExpression(column, value, update_type="increment"), ) - self.set_action("update") - results = self.new_connection().query(self.to_qmark(), self._bindings) + + if self.dry: + return self + + result = self.new_connection().query(self.to_qmark(), self._bindings) processed_results = self.get_processor().get_column_value( - self, column, results, id_key, id_value + self, column, result, id_key, id_value ) + if model: + additional[column] = processed_results + model.fill_original(additional) + self.observe_events(model, "updated") + return processed_results def decrement(self, column, value=1): @@ -1526,8 +1538,12 @@ def decrement(self, column, value=1): if model and model.is_loaded(): self.where(model.get_primary_key(), model.get_primary_key_value()) - additional.update({model.get_primary_key(): model.get_primary_key_value()}) + additional.update({ + model.get_primary_key(): model.get_primary_key_value(), + column: int(model.__original_attributes__.get(column, 0)) - abs(value) + }) + model.fill(additional) self.observe_events(model, "updating") self._updates += ( @@ -1535,10 +1551,19 @@ def decrement(self, column, value=1): ) self.set_action("update") + + if self.dry: + return self + result = self.new_connection().query(self.to_qmark(), self._bindings) processed_results = self.get_processor().get_column_value( self, column, result, id_key, id_value ) + + if model: + additional[column] = processed_results + model.fill_original(additional) + self.observe_events(model, "updated") return processed_results def sum(self, column):