====== Platform ======
~~NOTOC~~
**From Version 5.21.0-beta-2**
== See Also ==
[[v5:dictionary:structure:introduction|Structured Schema Management]]\\
[[v5:dictionary:column_attributes|Column Attributes Reference]]\\
The keyword ''Platform'' is part of the **//Structured Schema Management//** suite, and indicates if the application of a metaStructure object or platform should be applied to a specific DBMS.
The ''Platform'' parameter can match one of the 3 values
===== NULL or Net Set =====
This is the default setting, and means that the object or attribute should be applied to all DBMS systems that the structure is applied to.
===== The Data Provider =====
For ADOdb, a data provider is the base class that the database type is derived from. For example, for ODBC connections, the data provider is ''odbc'', and the driver may be ''odbc_mysql'',''odbc_mssql'',''odbc_mssql2012'' etc.
To identify the Data Provider for the connection type you are using, check the ADOdb page for the driver.
Use of the Data Provider to match a database is the optimal method. If used, it matches all the database types that are derived from provider, so if a new database type is added to ADOdb, a data provider match will work without modification of the code.
===== The Driver Type =====
The database type is the value used in the [[v5:reference:connection:adonewconnection|adoNewConnection]] statement. If used, the platform will only match the provided parameter.
===== Usage =====
In the following example, a table **//employees//** is to be created. The table is to be used in a portable environment, and require 2 platform specific attribute.
- Under **MySQL**, an engine type needs to be specified. The ''mysql'' option matches the **//Data Provider//**, and will be used if the database type is ''mysqli'', ''mysqlt'', or similar.
- Under **IBM DB2**, a tablespace needs to be specified. The ''db2'' option matches the //**Driver Type**//, and will only be used if the driver type matches the provided values.
$t = new metaObjectStructure($dict,'employees');
$t->addAttribute('ENGINE INNODB','mysql');
/*
* Add another platform option, for IBM DB2
*/
$t->addAttribute(array('TABLESPACE'=>'LARGE1'),'db2');
Alternatively, we can write the definition as:
$t = new metaObjectStructure($dict,'employees');
$t->addAttribute('ENGINE INNODB','mysql')
->addAttribute(array('TABLESPACE'=>'LARGE1'),'db2');