Skip to content

Commit 424bdd4

Browse files
authored
fix updated with provided qualified updated_at (#41133)
1 parent 95b732f commit 424bdd4

File tree

2 files changed

+33
-1
lines changed

2 files changed

+33
-1
lines changed

src/Illuminate/Database/Eloquent/Builder.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1004,7 +1004,7 @@ protected function addUpdatedAtColumn(array $values)
10041004

10051005
$qualifiedColumn = end($segments).'.'.$column;
10061006

1007-
$values[$qualifiedColumn] = $values[$column];
1007+
$values[$qualifiedColumn] = Arr::get($values, $qualifiedColumn, $values[$column]);
10081008

10091009
unset($values[$column]);
10101010

tests/Database/DatabaseEloquentBuilderTest.php

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1683,6 +1683,20 @@ public function testUpdateWithTimestampValue()
16831683
$this->assertEquals(1, $result);
16841684
}
16851685

1686+
public function testUpdateWithQualifiedTimestampValue()
1687+
{
1688+
$query = new BaseBuilder(m::mock(ConnectionInterface::class), new Grammar, m::mock(Processor::class));
1689+
$builder = new Builder($query);
1690+
$model = new EloquentBuilderTestStub;
1691+
$this->mockConnectionForModel($model, '');
1692+
$builder->setModel($model);
1693+
$builder->getConnection()->shouldReceive('update')->once()
1694+
->with('update "table" set "table"."foo" = ?, "table"."updated_at" = ?', ['bar', null])->andReturn(1);
1695+
1696+
$result = $builder->update(['table.foo' => 'bar', 'table.updated_at' => null]);
1697+
$this->assertEquals(1, $result);
1698+
}
1699+
16861700
public function testUpdateWithoutTimestamp()
16871701
{
16881702
$query = new BaseBuilder(m::mock(ConnectionInterface::class), new Grammar, m::mock(Processor::class));
@@ -1715,6 +1729,24 @@ public function testUpdateWithAlias()
17151729
Carbon::setTestNow(null);
17161730
}
17171731

1732+
public function testUpdateWithAliasWithQualifiedTimestampValue()
1733+
{
1734+
Carbon::setTestNow($now = '2017-10-10 10:10:10');
1735+
1736+
$query = new BaseBuilder(m::mock(ConnectionInterface::class), new Grammar, m::mock(Processor::class));
1737+
$builder = new Builder($query);
1738+
$model = new EloquentBuilderTestStub;
1739+
$this->mockConnectionForModel($model, '');
1740+
$builder->setModel($model);
1741+
$builder->getConnection()->shouldReceive('update')->once()
1742+
->with('update "table" as "alias" set "foo" = ?, "alias"."updated_at" = ?', ['bar', null])->andReturn(1);
1743+
1744+
$result = $builder->from('table as alias')->update(['foo' => 'bar', 'alias.updated_at' => null]);
1745+
$this->assertEquals(1, $result);
1746+
1747+
Carbon::setTestNow(null);
1748+
}
1749+
17181750
public function testUpsert()
17191751
{
17201752
Carbon::setTestNow($now = '2017-10-10 10:10:10');

0 commit comments

Comments
 (0)