mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 12:05:37 +00:00
API Remove DataObjectSchema::getFieldMap() (#8960)
Introduced as a less public API in https://github.com/silverstripe/silverstripe-assets/pull/227
This commit is contained in:
parent
692295d48f
commit
8ee50d2ba7
@ -1242,54 +1242,4 @@ class DataObjectSchema
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an array of the fields available for the provided class and its sub-classes as follows:
|
||||
* <code>
|
||||
* [
|
||||
* 'ClassName' => [
|
||||
* 'TableName' => [
|
||||
* 'FieldName',
|
||||
* 'FieldName2',
|
||||
* ],
|
||||
* 'TableName2' => [
|
||||
* 'FieldName3',
|
||||
* ],
|
||||
* ],
|
||||
* ]
|
||||
* </code>
|
||||
*
|
||||
* @param string|object $baseClass
|
||||
* @param bool $includeBaseClass Whether to include fields in the base class or not
|
||||
* @param string|array $fieldNames The field to get mappings for, for example 'HTMLText'. Can also be an array.
|
||||
* @return array An array of fields that derivec from $baseClass.
|
||||
* @throws \ReflectionException
|
||||
*/
|
||||
public static function getFieldMap($baseClass, $includeBaseClass, $fieldNames)
|
||||
{
|
||||
$mapping = [];
|
||||
|
||||
foreach (ClassInfo::subclassesFor($baseClass, $includeBaseClass) as $class) {
|
||||
/** @var DataObjectSchema $schema */
|
||||
$schema = singleton($class)->getSchema();
|
||||
/** @var DataObject $fields */
|
||||
$fields = $schema->fieldSpecs($class);
|
||||
foreach ($fields as $field => $type) {
|
||||
if (in_array($type, $fieldNames)) {
|
||||
$table = $schema->tableForField($class, $field);
|
||||
if (!isset($mapping[$class])) {
|
||||
$mapping[$class] = [];
|
||||
}
|
||||
if (!isset($mapping[$class][$table])) {
|
||||
$mapping[$class][$table] = [];
|
||||
}
|
||||
if (!in_array($field, $mapping[$class][$table])) {
|
||||
$mapping[$class][$table][] = $field;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $mapping;
|
||||
}
|
||||
}
|
||||
|
@ -20,6 +20,7 @@ use SilverStripe\ORM\FieldType\DBPolymorphicForeignKey;
|
||||
use SilverStripe\ORM\FieldType\DBVarchar;
|
||||
use SilverStripe\ORM\ManyManyList;
|
||||
use SilverStripe\ORM\Tests\DataObjectTest\Company;
|
||||
use SilverStripe\ORM\Tests\DataObjectTest\Fan;
|
||||
use SilverStripe\ORM\Tests\DataObjectTest\OtherSubclassWithSameField;
|
||||
use SilverStripe\ORM\Tests\DataObjectTest\Player;
|
||||
use SilverStripe\ORM\Tests\DataObjectTest\SubTeam;
|
||||
@ -2408,20 +2409,4 @@ class DataObjectTest extends SapphireTest
|
||||
|
||||
$do->write();
|
||||
}
|
||||
|
||||
public function testGetFieldMap()
|
||||
{
|
||||
$classes = DataObjectSchema::getFieldMap(DataObject::class, false, ['HTMLVarchar', 'Varchar']);
|
||||
|
||||
$this->assertEquals('Title', $classes[Team::class]['DataObjectTest_Team'][1]);
|
||||
$this->assertEquals(
|
||||
'SubclassDatabaseField',
|
||||
$classes[SubTeam::class]['DataObjectTest_SubTeam'][0]
|
||||
);
|
||||
|
||||
$classes = DataObjectSchema::getFieldMap(SubTeam::class, true, ['HTMLVarchar']);
|
||||
|
||||
$this->assertFalse(isset($classes[Team::class]));
|
||||
$this->assertEquals('DatabaseField', $classes[SubTeam::class]['DataObjectTest_Team'][0]);
|
||||
}
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ namespace SilverStripe\ORM\Tests\DataObjectTest;
|
||||
|
||||
use SilverStripe\Dev\TestOnly;
|
||||
use SilverStripe\ORM\DataObject;
|
||||
use SilverStripe\ORM\FieldType\DBVarchar;
|
||||
|
||||
class Fan extends DataObject implements TestOnly
|
||||
{
|
||||
@ -11,7 +12,7 @@ class Fan extends DataObject implements TestOnly
|
||||
|
||||
private static $db = array(
|
||||
'Name' => 'Varchar(255)',
|
||||
'Email' => 'Varchar',
|
||||
'Email' => DBVarchar::class
|
||||
);
|
||||
|
||||
private static $has_one = array(
|
||||
|
Loading…
x
Reference in New Issue
Block a user