Introduction
Delighted
hook_schema
is one of those methods where you are happy to have a usable documentation on the api website. It is pretty much self-explanatory and you don’t have to look for hours on third parties websites to get some usable information. 🙂
- hook_schema on api.drupal.org and don’t forget to select your Drupal version!
$DRUPAL_ROOT\core\lib\Drupal\Core\Database\database.api.php
: another file which describes the Database API array structure!- Schema Reference on drupal.org for D7. Yeah, there is no D8 version of the docs… Hopefully, nothing has changed between D7 and D8.
After some research, I found the files which are responsible for schema to SQL statement conversion:
File location | Method name |
---|---|
$DRUPAL_ROOT\core\includes\schema.inc | drupal_install_schema (8.2.x) |
$DRUPAL_ROOT\core\includes\database.inc (deprecated) | db_create_table (8.2.x) (deprecated) |
$DRUPAL_ROOT\core\lib\Drupal\Core\Database\Schema.php | protected createTable (8.2.x) |
$DRUPAL_ROOT\core\lib\Drupal\Core\Database\Driver\{mysql,sqlite,pgsql}\Schema.php |
|
$DRUPAL_ROOT\core\lib\Drupal\Core\Database\Driver\{mysql,sqlite,pgsql}\Schema.php |
|
The code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
<?php /** * Implements hook_schema(). */ function my_module_schema() { $schema['my_module_history'] = [ 'description' => 'Stores the history of content views blablabla.', 'fields' => [ 'uid' => [ 'description' => 'User id.', 'type' => 'int', 'length' => 10, 'unsigned' => true, 'not null' => true ], 'content_id'=> [ 'description' => 'Id of the content.', 'type' => 'int', 'length' => 11, 'not null' => true ], 'access_time'=> [ 'description' => 'Access timestamp.', 'type' => 'int', 'length' => 10, 'unsigned' => true, 'not null' => true ] ] ]; return $schema; } |