DataObjectSchema
class DataObjectSchema (View source)
Provides {@link \SilverStripe\ORM\DataObject} and database schema mapping functionality
Traits
A class that can be instantiated or replaced via DI
Provides extensions to this object to integrate it with standard config API methods.
Constants
DB_ONLY |
fieldSpec should exclude virtual fields (such as composite fields), and only include fields with a db column. |
UNINHERITED |
fieldSpec should only return fields that belong to this table, and not any ancestors |
INCLUDE_CLASS |
fieldSpec should prefix all field specifications with the class name in RecordClass.Column(spec) format. |
Properties
static private string | $table_namespace_separator | Default separate for table namespaces. Can be set to any string for databases that do not support some characters. |
Methods
An implementation of the factory method, allows you to create an instance of a class
Creates a class instance by the "singleton" design pattern.
Get a configuration accessor for this class. Short hand for Config::inst()->get($this->class, .....).
Gets the uninherited value for the given config option
Clear cached table names
Get all table names
Given a DataObject class and a field on that class, determine the appropriate SQL for selecting / filtering on in a SQL string. Note that $class must be a valid class, not an arbitrary table.
Get table name for the given class.
Returns the root class (the first to extend from DataObject) for the passed class.
Get the base table
Get all DB field specifications for a class, including ancestors and composite fields.
Get specifications for a single class field
Find the class for the given table
No description
Return the complete map of fields to specification on this object, including fixed_fields.
Gets a single database field.
No description
Check if the given class has a table
Returns a list of all the composite if the given db field on the class is a composite field.
Get a composite field for a class
Returns the table name in the class hierarchy which contains a given field column for a {@link DataObject}. If the field does not exist, this will return null.
Returns the class name in the class hierarchy which contains a given field column for a {@link DataObject}. If the field does not exist, this will return null.
Return information about a specific many_many component. Returns a numeric array.
Return the many-to-many extra fields specification for a specific component.
Return data for a specific has_many component.
Return data for a specific has_one component.
Return data for a specific belongs_to component.
Check class for any unary component
Tries to find the database key on another object that is used to store a relationship to this class. If no join field can be found it defaults to 'ParentID'.
Details
static Injectable
create(array ...$args)
An implementation of the factory method, allows you to create an instance of a class
This method will defer class substitution to the Injector API, which can be customised via the Config API to declare substitution classes.
This can be called in one of two ways - either calling via the class directly, or calling on Object and passing the class name as the first parameter. The following are equivalent: $list = DataList::create('SiteTree'); $list = SiteTree::get();
static Injectable
singleton(string $class = null)
Creates a class instance by the "singleton" design pattern.
It will always return the same instance for this class, which can be used for performance reasons and as a simple way to access instance methods which don't rely on instance data (e.g. the custom SilverStripe static handling).
static Config_ForClass
config()
Get a configuration accessor for this class. Short hand for Config::inst()->get($this->class, .....).
mixed
stat(string $name)
deprecated
deprecated
Get inherited config value
mixed
uninherited(string $name)
Gets the uninherited value for the given config option
$this
set_stat(string $name, mixed $value)
deprecated
deprecated
Update the config value for a given property
reset()
Clear cached table names
array
getTableNames()
Get all table names
string
sqlColumnForField(string $class, string $field, string $tablePrefix = null)
Given a DataObject class and a field on that class, determine the appropriate SQL for selecting / filtering on in a SQL string. Note that $class must be a valid class, not an arbitrary table.
The result will be a standard ANSI-sql quoted string in "Table"."Column" format.
string
tableName(string $class)
Get table name for the given class.
Note that this does not confirm a table actually exists (or should exist), but returns the name that would be used if this table did exist.
string
baseDataClass(string|object $class)
Returns the root class (the first to extend from DataObject) for the passed class.
string
baseDataTable(string|object $class)
Get the base table
array
fieldSpecs(string|DataObject $classOrInstance, int $options = 0)
Get all DB field specifications for a class, including ancestors and composite fields.
string|null
fieldSpec(string|DataObject $classOrInstance, string $fieldName, int $options = 0)
Get specifications for a single class field
string|null
tableClass(string $table)
Find the class for the given table
array
getLegacyTableNames($class)
array
databaseFields(string $class, bool $aggregated = true)
Return the complete map of fields to specification on this object, including fixed_fields.
"ID" will be included on every table.
string|null
databaseField(string $class, string $field, bool $aggregated = true)
Gets a single database field.
array
databaseIndexes(string $class, bool $aggregated = true)
bool
classHasTable(string $class)
Check if the given class has a table
array
compositeFields(string $class, bool $aggregated = true)
Returns a list of all the composite if the given db field on the class is a composite field.
Will check all applicable ancestor classes and aggregate results.
Can be called directly on an object. E.g. Member::composite_fields(), or Member::composite_fields(null, true) to aggregate.
Includes composite has_one (Polymorphic) fields
string|null
compositeField(string $class, string $field, bool $aggregated = true)
Get a composite field for a class
string
tableForField(string $candidateClass, string $fieldName)
Returns the table name in the class hierarchy which contains a given field column for a {@link DataObject}. If the field does not exist, this will return null.
string
classForField(string $candidateClass, string $fieldName)
Returns the class name in the class hierarchy which contains a given field column for a {@link DataObject}. If the field does not exist, this will return null.
array|null
manyManyComponent(string $class, string $component)
Return information about a specific many_many component. Returns a numeric array.
The first item in the array will be the class name of the relation.
Standard many_many return type is:
array(
array|null
manyManyExtraFieldsForComponent(string $class, string $component)
Return the many-to-many extra fields specification for a specific component.
string|null
hasManyComponent(string $class, string $component, bool $classOnly = true)
Return data for a specific has_many component.
string|null
hasOneComponent(string $class, string $component)
Return data for a specific has_one component.
string|null
belongsToComponent(string $class, string $component, bool $classOnly = true)
Return data for a specific belongs_to component.
string|null
unaryComponent(string $class, string $component)
Check class for any unary component
Alias for hasOneComponent() ?: belongsToComponent()
string
getRemoteJoinField(string $class, string $component, string $type = 'has_many', bool $polymorphic = false)
Tries to find the database key on another object that is used to store a relationship to this class. If no join field can be found it defaults to 'ParentID'.
If the remote field is polymorphic then $polymorphic is set to true, and the return value is in the form 'Relation' instead of 'RelationID', referencing the composite DBField.