Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
InstallSchema.php
Go to the documentation of this file.
1 <?php
8 
12 
16 class InstallSchema implements InstallSchemaInterface
17 {
24  {
26 
27  $installer->startSetup();
28 
29  //Create first table
30  $table = $installer->getConnection()
31  ->newTable($installer->getTable('reference_table'))
32  ->addColumn(
33  'smallint_ref',
34  \Magento\Framework\DB\Ddl\Table::TYPE_SMALLINT,
35  3,
36  ['primary' => true, 'identity' => true, 'nullable' => false],
37  'Smallint'
38  )
39  ->setComment('Reference table');
40  $installer->getConnection()->createTable($table);
41 
42  $testTable = $installer->getConnection()->newTable('test_table')
43  ->addColumn(
44  'smallint',
45  \Magento\Framework\DB\Ddl\Table::TYPE_SMALLINT,
46  2,
47  ['nullable' => true, 'default' => 0],
48  'Smallint'
49  )
50  ->addColumn(
51  'bigint',
52  \Magento\Framework\DB\Ddl\Table::TYPE_BIGINT,
53  10,
54  ['nullable' => true, 'unsigned' => false, 'default' => 0],
55  'Bigint'
56  )
57  ->addColumn(
58  'float',
59  \Magento\Framework\DB\Ddl\Table::TYPE_FLOAT,
60  null,
61  ['default' => 0],
62  'Float'
63  )
64  ->addColumn(
65  'date',
66  \Magento\Framework\DB\Ddl\Table::TYPE_DATE,
67  null,
68  [],
69  'Date'
70  )
71  ->addColumn(
72  'timestamp',
73  \Magento\Framework\DB\Ddl\Table::TYPE_TIMESTAMP,
74  null,
75  ['default' => \Magento\Framework\DB\Ddl\Table::TIMESTAMP_INIT_UPDATE],
76  'Timestamp'
77  )
78  ->addColumn(
79  'mediumtext',
80  \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
81  11222222,
82  [],
83  'Mediumtext'
84  )
85  ->addColumn(
86  'varchar',
87  \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
88  254,
89  ['nullable' => true],
90  'Varchar'
91  )
92  ->addColumn(
93  'boolean',
94  \Magento\Framework\DB\Ddl\Table::TYPE_BOOLEAN,
95  1,
96  [],
97  'Boolean'
98  )
99  ->addIndex(
100  $installer->getIdxName($installer->getTable('test_table'), ['smallint', 'bigint']),
101  ['smallint', 'bigint'],
102  ['type' => \Magento\Framework\DB\Adapter\Pdo\Mysql::INDEX_TYPE_UNIQUE]
103  )
104  ->addIndex(
105  $installer->getIdxName($installer->getTable('test_table'), ['bigint']),
106  ['bigint']
107  )
108  ->addForeignKey(
109  $installer->getFkName(
110  $installer->getTable('test_table'),
111  'smallint',
112  $installer->getTable('reference_table'),
113  'smallint_ref'
114  ),
115  'smallint',
116  $installer->getTable('reference_table'),
117  'smallint_ref',
119  )
120  ->setComment('Test Table');
121  $installer->getConnection()->createTable($testTable);
122 
123  $installer->endSetup();
124  }
125 }
$setup
Definition: trigger.php:12
$table
Definition: trigger.php:14
install(SchemaSetupInterface $setup, ModuleContextInterface $context)