Skip to content

Commit 60f48e5

Browse files
Fix overwriting updated_at when $set is used (#3433)
1 parent 161cb8c commit 60f48e5

File tree

2 files changed

+19
-0
lines changed

2 files changed

+19
-0
lines changed

src/Eloquent/Builder.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -310,6 +310,10 @@ protected function addUpdatedAtColumn(array $values)
310310
}
311311

312312
$column = $this->model->getUpdatedAtColumn();
313+
if (isset($values['$set'][$column])) {
314+
return $values;
315+
}
316+
313317
$values = array_replace(
314318
[$column => $this->model->freshTimestampString()],
315319
$values,

tests/ModelTest.php

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,21 @@ public function testUpdate(): void
169169
$this->assertEquals('Hans Thomas', $check->fullname);
170170
}
171171

172+
public function testUpdateTroughSetUpdatedAt(): void
173+
{
174+
$user = new User();
175+
$user->name = 'John Doe';
176+
$user->title = 'admin';
177+
$user->age = 35;
178+
$user->save();
179+
180+
$updatedAt = Carbon::yesterday();
181+
User::query()->update(['$set' => ['updated_at' => new UTCDateTime($updatedAt)]]);
182+
183+
$user->refresh();
184+
$this->assertEquals($updatedAt, $user->updated_at);
185+
}
186+
172187
public function testUpsert()
173188
{
174189
$result = User::upsert([

0 commit comments

Comments
 (0)