Skip to content

Commit

Permalink
Merge branch '5.0' into 5.1
Browse files Browse the repository at this point in the history
  • Loading branch information
github-actions[bot] committed Sep 16, 2023
2 parents 0b89d32 + ff4a091 commit 24db72a
Show file tree
Hide file tree
Showing 5 changed files with 13 additions and 6 deletions.
3 changes: 2 additions & 1 deletion src/ORM/DataQuery.php
Original file line number Diff line number Diff line change
Expand Up @@ -603,6 +603,7 @@ protected function selectColumnsFromTable(SQLSelect &$query, $tableClass, $colum
$schema = DataObject::getSchema();
$databaseFields = $schema->databaseFields($tableClass, false);
$compositeFields = $schema->compositeFields($tableClass, false);
$tableName = $schema->tableName($tableClass);
unset($databaseFields['ID']);
foreach ($databaseFields as $k => $v) {
if ((is_null($columns) || in_array($k, $columns ?? [])) && !isset($compositeFields[$k])) {
Expand All @@ -618,12 +619,12 @@ protected function selectColumnsFromTable(SQLSelect &$query, $tableClass, $colum
$query->selectField($quotedField, $k);
}
$dbO = Injector::inst()->create($v, $k);
$dbO->setTable($tableName);
$dbO->addToQuery($query);
}
}
foreach ($compositeFields as $k => $v) {
if ((is_null($columns) || in_array($k, $columns ?? [])) && $v) {
$tableName = $schema->tableName($tableClass);
$dbO = Injector::inst()->create($v, $k);
$dbO->setTable($tableName);
$dbO->addToQuery($query);
Expand Down
2 changes: 2 additions & 0 deletions src/ORM/FieldType/DBClassName.php
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,8 @@ public function setValue($value, $record = null, $markChanged = true)
if ($record instanceof DataObject) {
$this->record = $record;
}

return $this;
}

public function getDefault()
Expand Down
2 changes: 2 additions & 0 deletions src/ORM/FieldType/DBPrimaryKey.php
Original file line number Diff line number Diff line change
Expand Up @@ -68,5 +68,7 @@ public function setValue($value, $record = null, $markChanged = true)
if ($record instanceof DataObject) {
$this->object = $record;
}

return $this;
}
}
5 changes: 3 additions & 2 deletions tests/php/ORM/DataQueryTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -384,8 +384,9 @@ public function testAddToQueryIsCalled()
// Including filter on parent table only doesn't pull in second
$query = new DataQuery(DataQueryTest\DataObjectAddsToQuery::class);
$result = $query->getFinalisedQuery();
// The `DBFieldAddsToQuery` test field removes itself from the select query
$this->assertArrayNotHasKey('FieldTwo', $result->getSelect());
// The `DBFieldAddsToQuery` test field adds a new field to the select query
$this->assertArrayHasKey('FieldTwo2', $result->getSelect());
$this->assertSame('"DataQueryTest_AddsToQuery"."FieldTwo"', $result->getSelect()['FieldTwo2']);
}

/**
Expand Down
7 changes: 4 additions & 3 deletions tests/php/ORM/DataQueryTest/DBFieldAddsToQuery.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,14 @@

use SilverStripe\Dev\TestOnly;
use SilverStripe\ORM\FieldType\DBText;
use SilverStripe\ORM\Queries\SQLSelect;

class DBFieldAddsToQuery extends DBText implements TestOnly
{
public function addToQuery(&$query)
{
$select = $query->getSelect();
unset($select[$this->name]);
$query->setSelect($select);
// Add a new item, to validate that tableName and name are set correctly.
/** @var SQLSelect $query */
$query->addSelect([$this->name . '2' => '"' . $this->tableName . '"."' . $this->name . '"']);
}
}

0 comments on commit 24db72a

Please sign in to comment.