FieldtypeOptions::getDatabaseSchema() method

Get schema for the Fieldtype's database table

  • Should return an array like in the example below, indexed by field name with type details as the value (as it would be in an SQL statement).

  • Indexes are passed through with a keys array. Note that pages_id as a field and primary key may be retrieved by starting with the parent schema return from the built-in getDatabaseSchema() method.

  • At minimum, each Fieldtype must add a data field as well as an index for it.

  • If you want a PHP NULL value to become a NULL in the database, your column definition must specify: DEFAULT NULL.

Example

array(
 'data' => 'mediumtext NOT NULL',
 'keys' => array(
   'primary' => 'PRIMARY KEY (`pages_id`)',
   'FULLTEXT KEY data (data)',
 ),
 'xtra' => array(
   // optional extras, MySQL defaults will be used if omitted
   'append' =>
     'ENGINE={$this->config->dbEngine} ' .
     'DEFAULT CHARSET={$this->config->dbCharset}'

   // true (default) if this schema provides all storage for this fieldtype.
   // false if other storage is involved with this fieldtype, beyond this schema
   // (like repeaters, PageTable, etc.)
   'all' => true,
 )
);

Usage

$array = $fieldtypeOptions->getDatabaseSchema(Field $field);

Arguments

NameType(s)Description
fieldField

In case it's needed for the schema, but typically isn't.

Return value

array


FieldtypeOptions methods and properties

API reference based on ProcessWire core version 3.0.244

Latest news

  • ProcessWire Weekly #558
    In the 558th issue of ProcessWire Weekly we'll check out the blog post that introduces ProcessWire 3.0.244, share some recent ProcessWire highlights, and more. Read on!
    Weekly.pw / 18 January 2025
  • ProcessWire 3.0.244 new main/master version
    ProcessWire 3.0.244 is our newest main/master/stable version. It's been more than a year in the making and is packed with tons of new features, issue fixes, optimizations and more. This post covers all the details.
    Blog / 18 January 2025
  • Subscribe to weekly ProcessWire news

“To Drupal, or to ProcessWire? The million dollar choice. We decided to make an early switch to PW. And in retrospect, ProcessWire was probably the best decision we made. Thanks are due to ProcessWire and the amazing system and set of modules that are in place.” —Unni Krishnan, Founder of PigtailPundits