From def1ef852de879499f061e592e47fd20f4f7f0c5 Mon Sep 17 00:00:00 2001 From: Chris Carpenter Date: Fri, 23 Dec 2016 15:36:00 -0500 Subject: [PATCH] Fix update method. --- src/BuilderTrait.php | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/BuilderTrait.php b/src/BuilderTrait.php index acfc37a..423d649 100644 --- a/src/BuilderTrait.php +++ b/src/BuilderTrait.php @@ -116,17 +116,21 @@ public function update(array $values) // update version table records $db = $this->model->getConnection(); foreach ($affectedRecords as $record) { - // get versioned values from record + // get current version values + $currentVersionValues = $db->table($this->model->getVersionTable()) + ->where([ + [$this->model->getVersionKeyName(), $record->{$this->model->getKeyName()}], + [$this->model->getVersionColumn(), $record->{$this->model->getLatestVersionColumn()}] + ])->first(); + + // merge current version with updated values to create new version foreach($this->model->getVersionedAttributeNames() as $key) { - $recordVersionValues[$key] = (isset($versionValues[$key])) ? $versionValues[$key] : $record->{$key}; + $recordVersionValues[$key] = (isset($versionValues[$key])) ? $versionValues[$key] : $currentVersionValues->{$key}; } - // merge versioned values from record and input - $recordVersionValues = array_merge($recordVersionValues, $versionValues); - // set version and ref_id $recordVersionValues[$this->model->getVersionKeyName()] = $record->{$this->model->getKeyName()}; - $recordVersionValues[$this->model->getVersionColumn()] = $record->{$this->model->getVersionColumn()}+1; + $recordVersionValues[$this->model->getVersionColumn()] = $record->{$this->model->getLatestVersionColumn()}+1; // insert new version if(! $db->table($this->model->getVersionTable())->insert($recordVersionValues)) {