diff --git a/src/Eloquent/Builder.php b/src/Eloquent/Builder.php index f3ffd7012..1b13de314 100644 --- a/src/Eloquent/Builder.php +++ b/src/Eloquent/Builder.php @@ -310,6 +310,10 @@ protected function addUpdatedAtColumn(array $values) } $column = $this->model->getUpdatedAtColumn(); + if (isset($values['$set'][$column])) { + return $values; + } + $values = array_replace( [$column => $this->model->freshTimestampString()], $values, diff --git a/tests/ModelTest.php b/tests/ModelTest.php index 88bd27e44..8fcd0b272 100644 --- a/tests/ModelTest.php +++ b/tests/ModelTest.php @@ -169,6 +169,21 @@ public function testUpdate(): void $this->assertEquals('Hans Thomas', $check->fullname); } + public function testUpdateTroughSetUpdatedAt(): void + { + $user = new User(); + $user->name = 'John Doe'; + $user->title = 'admin'; + $user->age = 35; + $user->save(); + + $updatedAt = Carbon::yesterday(); + User::query()->update(['$set' => ['updated_at' => new UTCDateTime($updatedAt)]]); + + $user->refresh(); + $this->assertEquals($updatedAt, $user->updated_at); + } + public function testUpsert() { $result = User::upsert([