mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 14:05:37 +02:00
FIX No longer caching has_one after ID change
This commit is contained in:
parent
27f272d660
commit
6169bf2760
@ -2316,6 +2316,10 @@ class DataObject extends ViewableData implements DataObjectInterface, i18nEntity
|
||||
* @return DataObject $this
|
||||
*/
|
||||
public function setField($fieldName, $val) {
|
||||
//if it's a has_one component, destroy the cache
|
||||
if (substr($fieldName, -2) == 'ID') {
|
||||
unset($this->components[substr($fieldName, 0, -2)]);
|
||||
}
|
||||
// Situation 1: Passing an DBField
|
||||
if($val instanceof DBField) {
|
||||
$val->Name = $fieldName;
|
||||
|
@ -311,6 +311,7 @@ class DataObjectTest extends SapphireTest {
|
||||
public function testHasOneRelationship() {
|
||||
$team1 = $this->objFromFixture('DataObjectTest_Team', 'team1');
|
||||
$player1 = $this->objFromFixture('DataObjectTest_Player', 'player1');
|
||||
$player2 = $this->objFromFixture('DataObjectTest_Player', 'player2');
|
||||
|
||||
// Add a captain to team 1
|
||||
$team1->setField('CaptainID', $player1->ID);
|
||||
@ -325,6 +326,14 @@ class DataObjectTest extends SapphireTest {
|
||||
'Player 1 is the captain');
|
||||
$this->assertEquals($team1->getComponent('Captain')->FirstName, 'Player 1',
|
||||
'Player 1 is the captain');
|
||||
|
||||
$team1->CaptainID = $player2->ID;
|
||||
$team1->write();
|
||||
|
||||
$this->assertEquals($player2->ID, $team1->Captain()->ID);
|
||||
$this->assertEquals($player2->ID, $team1->getComponent('Captain')->ID);
|
||||
$this->assertEquals('Player 2', $team1->Captain()->FirstName);
|
||||
$this->assertEquals('Player 2', $team1->getComponent('Captain')->FirstName);
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user