<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Customer\Setup; use Magento\Framework\Setup\InstallSchemaInterface; use Magento\Framework\Setup\ModuleContextInterface; use Magento\Framework\Setup\SchemaSetupInterface; /** * @codeCoverageIgnore */ class InstallSchema implements InstallSchemaInterface { /** * {@inheritdoc} * @SuppressWarnings(PHPMD.ExcessiveMethodLength) */ public function install(SchemaSetupInterface $setup, ModuleContextInterface $context) { $installer = $setup; $installer->startSetup(); /** * Create table 'customer_entity' */ $table = $installer->getConnection()->newTable( $installer->getTable('customer_entity') )->addColumn( 'entity_id', \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER, null, ['identity' => true, 'unsigned' => true, 'nullable' => false, 'primary' => true], 'Entity Id' )->addColumn( 'website_id', \Magento\Framework\DB\Ddl\Table::TYPE_SMALLINT, null, ['unsigned' => true], 'Website Id' )->addColumn( 'email', \Magento\Framework\DB\Ddl\Table::TYPE_TEXT, 255, [], 'Email' )->addColumn( 'group_id', \Magento\Framework\DB\Ddl\Table::TYPE_SMALLINT, null, ['unsigned' => true, 'nullable' => false, 'default' => '0'], 'Group Id' )->addColumn( 'increment_id', \Magento\Framework\DB\Ddl\Table::TYPE_TEXT, 50, [], 'Increment Id' )->addColumn( 'store_id', \Magento\Framework\DB\Ddl\Table::TYPE_SMALLINT, null, ['unsigned' => true, 'default' => '0'], 'Store Id' )->addColumn( 'created_at', \Magento\Framework\DB\Ddl\Table::TYPE_TIMESTAMP, null, ['nullable' => false, 'default' => \Magento\Framework\DB\Ddl\Table::TIMESTAMP_INIT], 'Created At' )->addColumn( 'updated_at', \Magento\Framework\DB\Ddl\Table::TYPE_TIMESTAMP, null, ['nullable' => false, 'default' => \Magento\Framework\DB\Ddl\Table::TIMESTAMP_INIT_UPDATE], 'Updated At' )->addColumn( 'is_active', \Magento\Framework\DB\Ddl\Table::TYPE_SMALLINT, null, ['unsigned' => true, 'nullable' => false, 'default' => '1'], 'Is Active' )->addColumn( 'disable_auto_group_change', \Magento\Framework\DB\Ddl\Table::TYPE_SMALLINT, null, ['unsigned' => true, 'nullable' => false, 'default' => '0'], 'Disable automatic group change based on VAT ID' )->addColumn( 'created_in', \Magento\Framework\DB\Ddl\Table::TYPE_TEXT, 255, [], 'Created From' )->addColumn( 'prefix', \Magento\Framework\DB\Ddl\Table::TYPE_TEXT, 40, ['nullable' => true, 'default' => null], 'Prefix' )->addColumn( 'firstname', \Magento\Framework\DB\Ddl\Table::TYPE_TEXT, 255, [], 'First Name' )->addColumn( 'middlename', \Magento\Framework\DB\Ddl\Table::TYPE_TEXT, 255, ['nullable' => true, 'default' => null], 'Middle Name/Initial' )->addColumn( 'lastname', \Magento\Framework\DB\Ddl\Table::TYPE_TEXT, 255, [], 'Last Name' )->addColumn( 'suffix', \Magento\Framework\DB\Ddl\Table::TYPE_TEXT, 40, ['nullable' => true, 'default' => null], 'Suffix' )->addColumn( 'dob', \Magento\Framework\DB\Ddl\Table::TYPE_DATE, null, [], 'Date of Birth' )->addColumn( 'password_hash', \Magento\Framework\DB\Ddl\Table::TYPE_TEXT, 128 )->addColumn( 'rp_token', \Magento\Framework\DB\Ddl\Table::TYPE_TEXT, 128, ['nullable' => true, 'default' => null], 'Reset password token' )->addColumn( 'rp_token_created_at', \Magento\Framework\DB\Ddl\Table::TYPE_DATETIME, null, ['nullable' => true, 'default' => null], 'Reset password token creation time' )->addColumn( 'default_billing', \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER, null, ['unsigned' => true, 'nullable' => true, 'default' => null], 'Default Billing Address' )->addColumn( 'default_shipping', \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER, null, ['unsigned' => true, 'nullable' => true, 'default' => null], 'Default Shipping Address' )->addColumn( 'taxvat', \Magento\Framework\DB\Ddl\Table::TYPE_TEXT, 50, [], 'Tax/VAT Number' )->addColumn( 'confirmation', \Magento\Framework\DB\Ddl\Table::TYPE_TEXT, 64, ['nullable' => true, 'default' => null], 'Is Confirmed' )->addColumn( 'gender', \Magento\Framework\DB\Ddl\Table::TYPE_SMALLINT, null, ['unsigned' => true], 'Gender' )->addIndex( $installer->getIdxName('customer_entity', ['store_id']), ['store_id'] )->addIndex( $installer->getIdxName( 'customer_entity', ['email', 'website_id'], \Magento\Framework\DB\Adapter\AdapterInterface::INDEX_TYPE_UNIQUE ), ['email', 'website_id'], ['type' => \Magento\Framework\DB\Adapter\AdapterInterface::INDEX_TYPE_UNIQUE] )->addIndex( $installer->getIdxName('customer_entity', ['website_id']), ['website_id'] )->addIndex( $installer->getIdxName('customer_entity', ['firstname']), ['firstname'] )->addIndex( $installer->getIdxName('customer_entity', ['lastname']), ['lastname'] )->addForeignKey( $installer->getFkName('customer_entity', 'store_id', 'store', 'store_id'), 'store_id', $installer->getTable('store'), 'store_id', \Magento\Framework\DB\Ddl\Table::ACTION_SET_NULL )->addForeignKey( $installer->getFkName('customer_entity', 'website_id', 'store_website', 'website_id'), 'website_id', $installer->getTable('store_website'), 'website_id', \Magento\Framework\DB\Ddl\Table::ACTION_SET_NULL )->setComment( 'Customer Entity' ); $installer->getConnection()->createTable($table); /** * Create table 'customer_address_entity' */ $table = $installer->getConnection()->newTable( $installer->getTable('customer_address_entity') )->addColumn( 'entity_id', \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER, null, ['identity' => true, 'unsigned' => true, 'nullable' => false, 'primary' => true], 'Entity Id' )->addColumn( 'increment_id', \Magento\Framework\DB\Ddl\Table::TYPE_TEXT, 50, [], 'Increment Id' )->addColumn( 'parent_id', \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER, null, ['unsigned' => true, 'nullable' => true], 'Parent Id' )->addColumn( 'created_at', \Magento\Framework\DB\Ddl\Table::TYPE_TIMESTAMP, null, ['nullable' => false, 'default' => \Magento\Framework\DB\Ddl\Table::TIMESTAMP_INIT], 'Created At' )->addColumn( 'updated_at', \Magento\Framework\DB\Ddl\Table::TYPE_TIMESTAMP, null, ['nullable' => false, 'default' => \Magento\Framework\DB\Ddl\Table::TIMESTAMP_INIT_UPDATE], 'Updated At' )->addColumn( 'is_active', \Magento\Framework\DB\Ddl\Table::TYPE_SMALLINT, null, ['unsigned' => true, 'nullable' => false, 'default' => '1'], 'Is Active' )->addColumn( 'city', \Magento\Framework\DB\Ddl\Table::TYPE_TEXT, 255, ['nullable' => false], 'City' )->addColumn( 'company', \Magento\Framework\DB\Ddl\Table::TYPE_TEXT, 255, ['nullable' => true, 'default' => null], 'Company' )->addColumn( 'country_id', \Magento\Framework\DB\Ddl\Table::TYPE_TEXT, 255, ['nullable' => false], 'Country' )->addColumn( 'fax', \Magento\Framework\DB\Ddl\Table::TYPE_TEXT, 255, ['nullable' => true, 'default' => null], 'Fax' )->addColumn( 'firstname', \Magento\Framework\DB\Ddl\Table::TYPE_TEXT, 255, ['nullable' => false], 'First Name' )->addColumn( 'lastname', \Magento\Framework\DB\Ddl\Table::TYPE_TEXT, 255, ['nullable' => false], 'Last Name' )->addColumn( 'middlename', \Magento\Framework\DB\Ddl\Table::TYPE_TEXT, 255, ['nullable' => true, 'default' => null], 'Middle Name' )->addColumn( 'postcode', \Magento\Framework\DB\Ddl\Table::TYPE_TEXT, 255, ['nullable' => true, 'default' => null], 'Zip/Postal Code' )->addColumn( 'prefix', \Magento\Framework\DB\Ddl\Table::TYPE_TEXT, 40, ['nullable' => true, 'default' => null], 'Prefix' )->addColumn( 'region', \Magento\Framework\DB\Ddl\Table::TYPE_TEXT, 255, ['nullable' => true, 'default' => null], 'State/Province' )->addColumn( 'region_id', \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER, null, ['unsigned' => true, 'nullable' => true, 'default' => null], 'State/Province' )->addColumn( 'street', \Magento\Framework\DB\Ddl\Table::TYPE_TEXT, null, ['nullable' => false], 'Street Address' )->addColumn( 'suffix', \Magento\Framework\DB\Ddl\Table::TYPE_TEXT, 40, ['nullable' => true, 'default' => null], 'Suffix' )->addColumn( 'telephone', \Magento\Framework\DB\Ddl\Table::TYPE_TEXT, 255, ['nullable' => false], 'Phone Number' )->addColumn( 'vat_id', \Magento\Framework\DB\Ddl\Table::TYPE_TEXT, 255, ['nullable' => true, 'default' => null], 'VAT number' )->addColumn( 'vat_is_valid', \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER, null, ['unsigned' => true, 'nullable' => true, 'default' => null], 'VAT number validity' )->addColumn( 'vat_request_date', \Magento\Framework\DB\Ddl\Table::TYPE_TEXT, 255, ['nullable' => true, 'default' => null], 'VAT number validation request date' )->addColumn( 'vat_request_id', \Magento\Framework\DB\Ddl\Table::TYPE_TEXT, 255, ['nullable' => true, 'default' => null], 'VAT number validation request ID' )->addColumn( 'vat_request_success', \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER, null, ['unsigned' => true, 'nullable' => true, 'default' => null], 'VAT number validation request success' )->addIndex( $installer->getIdxName('customer_address_entity', ['parent_id']), ['parent_id'] )->addForeignKey( $installer->getFkName('customer_address_entity', 'parent_id', 'customer_entity', 'entity_id'), 'parent_id', $installer->getTable('customer_entity'), 'entity_id', \Magento\Framework\DB\Ddl\Table::ACTION_CASCADE, \Magento\Framework\DB\Ddl\Table::ACTION_CASCADE )->setComment( 'Customer Address Entity' ); $installer->getConnection()->createTable($table); /** * Create table 'customer_address_entity_datetime' */ $table = $installer->getConnection()->newTable( $installer->getTable('customer_address_entity_datetime') )->addColumn( 'value_id', \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER, null, ['identity' => true, 'nullable' => false, 'primary' => true], 'Value Id' )->addColumn( 'attribute_id', \Magento\Framework\DB\Ddl\Table::TYPE_SMALLINT, null, ['unsigned' => true, 'nullable' => false, 'default' => '0'], 'Attribute Id' )->addColumn( 'entity_id', \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER, null, ['unsigned' => true, 'nullable' => false, 'default' => '0'], 'Entity Id' )->addColumn( 'value', \Magento\Framework\DB\Ddl\Table::TYPE_DATETIME, null, ['nullable' => true, 'default' => null], 'Value' )->addIndex( $installer->getIdxName( 'customer_address_entity_datetime', ['entity_id', 'attribute_id'], \Magento\Framework\DB\Adapter\AdapterInterface::INDEX_TYPE_UNIQUE ), ['entity_id', 'attribute_id'], ['type' => \Magento\Framework\DB\Adapter\AdapterInterface::INDEX_TYPE_UNIQUE] )->addIndex( $installer->getIdxName('customer_address_entity_datetime', ['attribute_id']), ['attribute_id'] )->addIndex( $installer->getIdxName('customer_address_entity_datetime', ['entity_id', 'attribute_id', 'value']), ['entity_id', 'attribute_id', 'value'] )->addForeignKey( $installer->getFkName('customer_address_entity_datetime', 'attribute_id', 'eav_attribute', 'attribute_id'), 'attribute_id', $installer->getTable('eav_attribute'), 'attribute_id', \Magento\Framework\DB\Ddl\Table::ACTION_CASCADE )->addForeignKey( $installer->getFkName( 'customer_address_entity_datetime', 'entity_id', 'customer_address_entity', 'entity_id' ), 'entity_id', $installer->getTable('customer_address_entity'), 'entity_id', \Magento\Framework\DB\Ddl\Table::ACTION_CASCADE )->setComment( 'Customer Address Entity Datetime' ); $installer->getConnection()->createTable($table); /** * Create table 'customer_address_entity_decimal' */ $table = $installer->getConnection()->newTable( $installer->getTable('customer_address_entity_decimal') )->addColumn( 'value_id', \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER, null, ['identity' => true, 'nullable' => false, 'primary' => true], 'Value Id' )->addColumn( 'attribute_id', \Magento\Framework\DB\Ddl\Table::TYPE_SMALLINT, null, ['unsigned' => true, 'nullable' => false, 'default' => '0'], 'Attribute Id' )->addColumn( 'entity_id', \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER, null, ['unsigned' => true, 'nullable' => false, 'default' => '0'], 'Entity Id' )->addColumn( 'value', \Magento\Framework\DB\Ddl\Table::TYPE_DECIMAL, '12,4', ['nullable' => false, 'default' => '0.0000'], 'Value' )->addIndex( $installer->getIdxName( 'customer_address_entity_decimal', ['entity_id', 'attribute_id'], \Magento\Framework\DB\Adapter\AdapterInterface::INDEX_TYPE_UNIQUE ), ['entity_id', 'attribute_id'], ['type' => \Magento\Framework\DB\Adapter\AdapterInterface::INDEX_TYPE_UNIQUE] )->addIndex( $installer->getIdxName('customer_address_entity_decimal', ['attribute_id']), ['attribute_id'] )->addIndex( $installer->getIdxName('customer_address_entity_decimal', ['entity_id', 'attribute_id', 'value']), ['entity_id', 'attribute_id', 'value'] )->addForeignKey( $installer->getFkName('customer_address_entity_decimal', 'attribute_id', 'eav_attribute', 'attribute_id'), 'attribute_id', $installer->getTable('eav_attribute'), 'attribute_id', \Magento\Framework\DB\Ddl\Table::ACTION_CASCADE )->addForeignKey( $installer->getFkName( 'customer_address_entity_decimal', 'entity_id', 'customer_address_entity', 'entity_id' ), 'entity_id', $installer->getTable('customer_address_entity'), 'entity_id', \Magento\Framework\DB\Ddl\Table::ACTION_CASCADE )->setComment( 'Customer Address Entity Decimal' ); $installer->getConnection()->createTable($table); /** * Create table 'customer_address_entity_int' */ $table = $installer->getConnection()->newTable( $installer->getTable('customer_address_entity_int') )->addColumn( 'value_id', \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER, null, ['identity' => true, 'nullable' => false, 'primary' => true], 'Value Id' )->addColumn( 'attribute_id', \Magento\Framework\DB\Ddl\Table::TYPE_SMALLINT, null, ['unsigned' => true, 'nullable' => false, 'default' => '0'], 'Attribute Id' )->addColumn( 'entity_id', \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER, null, ['unsigned' => true, 'nullable' => false, 'default' => '0'], 'Entity Id' )->addColumn( 'value', \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER, null, ['nullable' => false, 'default' => '0'], 'Value' )->addIndex( $installer->getIdxName( 'customer_address_entity_int', ['entity_id', 'attribute_id'], \Magento\Framework\DB\Adapter\AdapterInterface::INDEX_TYPE_UNIQUE ), ['entity_id', 'attribute_id'], ['type' => \Magento\Framework\DB\Adapter\AdapterInterface::INDEX_TYPE_UNIQUE] )->addIndex( $installer->getIdxName('customer_address_entity_int', ['attribute_id']), ['attribute_id'] )->addIndex( $installer->getIdxName('customer_address_entity_int', ['entity_id', 'attribute_id', 'value']), ['entity_id', 'attribute_id', 'value'] )->addForeignKey( $installer->getFkName('customer_address_entity_int', 'attribute_id', 'eav_attribute', 'attribute_id'), 'attribute_id', $installer->getTable('eav_attribute'), 'attribute_id', \Magento\Framework\DB\Ddl\Table::ACTION_CASCADE )->addForeignKey( $installer->getFkName('customer_address_entity_int', 'entity_id', 'customer_address_entity', 'entity_id'), 'entity_id', $installer->getTable('customer_address_entity'), 'entity_id', \Magento\Framework\DB\Ddl\Table::ACTION_CASCADE )->setComment( 'Customer Address Entity Int' ); $installer->getConnection()->createTable($table); /** * Create table 'customer_address_entity_text' */ $table = $installer->getConnection()->newTable( $installer->getTable('customer_address_entity_text') )->addColumn( 'value_id', \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER, null, ['identity' => true, 'nullable' => false, 'primary' => true], 'Value Id' )->addColumn( 'attribute_id', \Magento\Framework\DB\Ddl\Table::TYPE_SMALLINT, null, ['unsigned' => true, 'nullable' => false, 'default' => '0'], 'Attribute Id' )->addColumn( 'entity_id', \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER, null, ['unsigned' => true, 'nullable' => false, 'default' => '0'], 'Entity Id' )->addColumn( 'value', \Magento\Framework\DB\Ddl\Table::TYPE_TEXT, '64k', ['nullable' => false], 'Value' )->addIndex( $installer->getIdxName( 'customer_address_entity_text', ['entity_id', 'attribute_id'], \Magento\Framework\DB\Adapter\AdapterInterface::INDEX_TYPE_UNIQUE ), ['entity_id', 'attribute_id'], ['type' => \Magento\Framework\DB\Adapter\AdapterInterface::INDEX_TYPE_UNIQUE] )->addIndex( $installer->getIdxName('customer_address_entity_text', ['attribute_id']), ['attribute_id'] )->addForeignKey( $installer->getFkName('customer_address_entity_text', 'attribute_id', 'eav_attribute', 'attribute_id'), 'attribute_id', $installer->getTable('eav_attribute'), 'attribute_id', \Magento\Framework\DB\Ddl\Table::ACTION_CASCADE )->addForeignKey( $installer->getFkName('customer_address_entity_text', 'entity_id', 'customer_address_entity', 'entity_id'), 'entity_id', $installer->getTable('customer_address_entity'), 'entity_id', \Magento\Framework\DB\Ddl\Table::ACTION_CASCADE )->setComment( 'Customer Address Entity Text' ); $installer->getConnection()->createTable($table); /** * Create table 'customer_address_entity_varchar' */ $table = $installer->getConnection()->newTable( $installer->getTable('customer_address_entity_varchar') )->addColumn( 'value_id', \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER, null, ['identity' => true, 'nullable' => false, 'primary' => true], 'Value Id' )->addColumn( 'attribute_id', \Magento\Framework\DB\Ddl\Table::TYPE_SMALLINT, null, ['unsigned' => true, 'nullable' => false, 'default' => '0'], 'Attribute Id' )->addColumn( 'entity_id', \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER, null, ['unsigned' => true, 'nullable' => false, 'default' => '0'], 'Entity Id' )->addColumn( 'value', \Magento\Framework\DB\Ddl\Table::TYPE_TEXT, 255, [], 'Value' )->addIndex( $installer->getIdxName( 'customer_address_entity_varchar', ['entity_id', 'attribute_id'], \Magento\Framework\DB\Adapter\AdapterInterface::INDEX_TYPE_UNIQUE ), ['entity_id', 'attribute_id'], ['type' => \Magento\Framework\DB\Adapter\AdapterInterface::INDEX_TYPE_UNIQUE] )->addIndex( $installer->getIdxName('customer_address_entity_varchar', ['attribute_id']), ['attribute_id'] )->addIndex( $installer->getIdxName('customer_address_entity_varchar', ['entity_id', 'attribute_id', 'value']), ['entity_id', 'attribute_id', 'value'] )->addForeignKey( $installer->getFkName('customer_address_entity_varchar', 'attribute_id', 'eav_attribute', 'attribute_id'), 'attribute_id', $installer->getTable('eav_attribute'), 'attribute_id', \Magento\Framework\DB\Ddl\Table::ACTION_CASCADE )->addForeignKey( $installer->getFkName( 'customer_address_entity_varchar', 'entity_id', 'customer_address_entity', 'entity_id' ), 'entity_id', $installer->getTable('customer_address_entity'), 'entity_id', \Magento\Framework\DB\Ddl\Table::ACTION_CASCADE )->setComment( 'Customer Address Entity Varchar' ); $installer->getConnection()->createTable($table); /** * Create table 'customer_entity_datetime' */ $table = $installer->getConnection()->newTable( $installer->getTable('customer_entity_datetime') )->addColumn( 'value_id', \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER, null, ['identity' => true, 'nullable' => false, 'primary' => true], 'Value Id' )->addColumn( 'attribute_id', \Magento\Framework\DB\Ddl\Table::TYPE_SMALLINT, null, ['unsigned' => true, 'nullable' => false, 'default' => '0'], 'Attribute Id' )->addColumn( 'entity_id', \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER, null, ['unsigned' => true, 'nullable' => false, 'default' => '0'], 'Entity Id' )->addColumn( 'value', \Magento\Framework\DB\Ddl\Table::TYPE_DATETIME, null, ['nullable' => true, 'default' => null], 'Value' )->addIndex( $installer->getIdxName( 'customer_entity_datetime', ['entity_id', 'attribute_id'], \Magento\Framework\DB\Adapter\AdapterInterface::INDEX_TYPE_UNIQUE ), ['entity_id', 'attribute_id'], ['type' => \Magento\Framework\DB\Adapter\AdapterInterface::INDEX_TYPE_UNIQUE] )->addIndex( $installer->getIdxName('customer_entity_datetime', ['attribute_id']), ['attribute_id'] )->addIndex( $installer->getIdxName('customer_entity_datetime', ['entity_id', 'attribute_id', 'value']), ['entity_id', 'attribute_id', 'value'] )->addForeignKey( $installer->getFkName('customer_entity_datetime', 'attribute_id', 'eav_attribute', 'attribute_id'), 'attribute_id', $installer->getTable('eav_attribute'), 'attribute_id', \Magento\Framework\DB\Ddl\Table::ACTION_CASCADE )->addForeignKey( $installer->getFkName('customer_entity_datetime', 'entity_id', 'customer_entity', 'entity_id'), 'entity_id', $installer->getTable('customer_entity'), 'entity_id', \Magento\Framework\DB\Ddl\Table::ACTION_CASCADE )->setComment( 'Customer Entity Datetime' ); $installer->getConnection()->createTable($table); /** * Create table 'customer_entity_decimal' */ $table = $installer->getConnection()->newTable( $installer->getTable('customer_entity_decimal') )->addColumn( 'value_id', \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER, null, ['identity' => true, 'nullable' => false, 'primary' => true], 'Value Id' )->addColumn( 'attribute_id', \Magento\Framework\DB\Ddl\Table::TYPE_SMALLINT, null, ['unsigned' => true, 'nullable' => false, 'default' => '0'], 'Attribute Id' )->addColumn( 'entity_id', \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER, null, ['unsigned' => true, 'nullable' => false, 'default' => '0'], 'Entity Id' )->addColumn( 'value', \Magento\Framework\DB\Ddl\Table::TYPE_DECIMAL, '12,4', ['nullable' => false, 'default' => '0.0000'], 'Value' )->addIndex( $installer->getIdxName( 'customer_entity_decimal', ['entity_id', 'attribute_id'], \Magento\Framework\DB\Adapter\AdapterInterface::INDEX_TYPE_UNIQUE ), ['entity_id', 'attribute_id'], ['type' => \Magento\Framework\DB\Adapter\AdapterInterface::INDEX_TYPE_UNIQUE] )->addIndex( $installer->getIdxName('customer_entity_decimal', ['attribute_id']), ['attribute_id'] )->addIndex( $installer->getIdxName('customer_entity_decimal', ['entity_id', 'attribute_id', 'value']), ['entity_id', 'attribute_id', 'value'] )->addForeignKey( $installer->getFkName('customer_entity_decimal', 'attribute_id', 'eav_attribute', 'attribute_id'), 'attribute_id', $installer->getTable('eav_attribute'), 'attribute_id', \Magento\Framework\DB\Ddl\Table::ACTION_CASCADE )->addForeignKey( $installer->getFkName('customer_entity_decimal', 'entity_id', 'customer_entity', 'entity_id'), 'entity_id', $installer->getTable('customer_entity'), 'entity_id', \Magento\Framework\DB\Ddl\Table::ACTION_CASCADE )->setComment( 'Customer Entity Decimal' ); $installer->getConnection()->createTable($table); /** * Create table 'customer_entity_int' */ $table = $installer->getConnection()->newTable( $installer->getTable('customer_entity_int') )->addColumn( 'value_id', \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER, null, ['identity' => true, 'nullable' => false, 'primary' => true], 'Value Id' )->addColumn( 'attribute_id', \Magento\Framework\DB\Ddl\Table::TYPE_SMALLINT, null, ['unsigned' => true, 'nullable' => false, 'default' => '0'], 'Attribute Id' )->addColumn( 'entity_id', \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER, null, ['unsigned' => true, 'nullable' => false, 'default' => '0'], 'Entity Id' )->addColumn( 'value', \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER, null, ['nullable' => false, 'default' => '0'], 'Value' )->addIndex( $installer->getIdxName( 'customer_entity_int', ['entity_id', 'attribute_id'], \Magento\Framework\DB\Adapter\AdapterInterface::INDEX_TYPE_UNIQUE ), ['entity_id', 'attribute_id'], ['type' => \Magento\Framework\DB\Adapter\AdapterInterface::INDEX_TYPE_UNIQUE] )->addIndex( $installer->getIdxName('customer_entity_int', ['attribute_id']), ['attribute_id'] )->addIndex( $installer->getIdxName('customer_entity_int', ['entity_id', 'attribute_id', 'value']), ['entity_id', 'attribute_id', 'value'] )->addForeignKey( $installer->getFkName('customer_entity_int', 'attribute_id', 'eav_attribute', 'attribute_id'), 'attribute_id', $installer->getTable('eav_attribute'), 'attribute_id', \Magento\Framework\DB\Ddl\Table::ACTION_CASCADE )->addForeignKey( $installer->getFkName('customer_entity_int', 'entity_id', 'customer_entity', 'entity_id'), 'entity_id', $installer->getTable('customer_entity'), 'entity_id', \Magento\Framework\DB\Ddl\Table::ACTION_CASCADE )->setComment( 'Customer Entity Int' ); $installer->getConnection()->createTable($table); /** * Create table 'customer_entity_text' */ $table = $installer->getConnection()->newTable( $installer->getTable('customer_entity_text') )->addColumn( 'value_id', \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER, null, ['identity' => true, 'nullable' => false, 'primary' => true], 'Value Id' )->addColumn( 'attribute_id', \Magento\Framework\DB\Ddl\Table::TYPE_SMALLINT, null, ['unsigned' => true, 'nullable' => false, 'default' => '0'], 'Attribute Id' )->addColumn( 'entity_id', \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER, null, ['unsigned' => true, 'nullable' => false, 'default' => '0'], 'Entity Id' )->addColumn( 'value', \Magento\Framework\DB\Ddl\Table::TYPE_TEXT, '64k', ['nullable' => false], 'Value' )->addIndex( $installer->getIdxName( 'customer_entity_text', ['entity_id', 'attribute_id'], \Magento\Framework\DB\Adapter\AdapterInterface::INDEX_TYPE_UNIQUE ), ['entity_id', 'attribute_id'], ['type' => \Magento\Framework\DB\Adapter\AdapterInterface::INDEX_TYPE_UNIQUE] )->addIndex( $installer->getIdxName('customer_entity_text', ['attribute_id']), ['attribute_id'] )->addForeignKey( $installer->getFkName('customer_entity_text', 'attribute_id', 'eav_attribute', 'attribute_id'), 'attribute_id', $installer->getTable('eav_attribute'), 'attribute_id', \Magento\Framework\DB\Ddl\Table::ACTION_CASCADE )->addForeignKey( $installer->getFkName('customer_entity_text', 'entity_id', 'customer_entity', 'entity_id'), 'entity_id', $installer->getTable('customer_entity'), 'entity_id', \Magento\Framework\DB\Ddl\Table::ACTION_CASCADE )->setComment( 'Customer Entity Text' ); $installer->getConnection()->createTable($table); /** * Create table 'customer_entity_varchar' */ $table = $installer->getConnection()->newTable( $installer->getTable('customer_entity_varchar') )->addColumn( 'value_id', \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER, null, ['identity' => true, 'nullable' => false, 'primary' => true], 'Value Id' )->addColumn( 'attribute_id', \Magento\Framework\DB\Ddl\Table::TYPE_SMALLINT, null, ['unsigned' => true, 'nullable' => false, 'default' => '0'], 'Attribute Id' )->addColumn( 'entity_id', \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER, null, ['unsigned' => true, 'nullable' => false, 'default' => '0'], 'Entity Id' )->addColumn( 'value', \Magento\Framework\DB\Ddl\Table::TYPE_TEXT, 255, [], 'Value' )->addIndex( $installer->getIdxName( 'customer_entity_varchar', ['entity_id', 'attribute_id'], \Magento\Framework\DB\Adapter\AdapterInterface::INDEX_TYPE_UNIQUE ), ['entity_id', 'attribute_id'], ['type' => \Magento\Framework\DB\Adapter\AdapterInterface::INDEX_TYPE_UNIQUE] )->addIndex( $installer->getIdxName('customer_entity_varchar', ['attribute_id']), ['attribute_id'] )->addIndex( $installer->getIdxName('customer_entity_varchar', ['entity_id', 'attribute_id', 'value']), ['entity_id', 'attribute_id', 'value'] )->addForeignKey( $installer->getFkName('customer_entity_varchar', 'attribute_id', 'eav_attribute', 'attribute_id'), 'attribute_id', $installer->getTable('eav_attribute'), 'attribute_id', \Magento\Framework\DB\Ddl\Table::ACTION_CASCADE )->addForeignKey( $installer->getFkName('customer_entity_varchar', 'entity_id', 'customer_entity', 'entity_id'), 'entity_id', $installer->getTable('customer_entity'), 'entity_id', \Magento\Framework\DB\Ddl\Table::ACTION_CASCADE )->setComment( 'Customer Entity Varchar' ); $installer->getConnection()->createTable($table); /** * Create table 'customer_group' */ $table = $installer->getConnection()->newTable( $installer->getTable('customer_group') )->addColumn( 'customer_group_id', \Magento\Framework\DB\Ddl\Table::TYPE_SMALLINT, null, ['identity' => true, 'unsigned' => true, 'nullable' => false, 'primary' => true], 'Customer Group Id' )->addColumn( 'customer_group_code', \Magento\Framework\DB\Ddl\Table::TYPE_TEXT, 32, ['nullable' => false], 'Customer Group Code' )->addColumn( 'tax_class_id', \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER, null, ['unsigned' => true, 'nullable' => false, 'default' => '0'], 'Tax Class Id' )->setComment( 'Customer Group' ); $installer->getConnection()->createTable($table); /** * Create table 'customer_eav_attribute' */ $table = $installer->getConnection()->newTable( $installer->getTable('customer_eav_attribute') )->addColumn( 'attribute_id', \Magento\Framework\DB\Ddl\Table::TYPE_SMALLINT, null, ['identity' => false, 'unsigned' => true, 'nullable' => false, 'primary' => true], 'Attribute Id' )->addColumn( 'is_visible', \Magento\Framework\DB\Ddl\Table::TYPE_SMALLINT, null, ['unsigned' => true, 'nullable' => false, 'default' => '1'], 'Is Visible' )->addColumn( 'input_filter', \Magento\Framework\DB\Ddl\Table::TYPE_TEXT, 255, [], 'Input Filter' )->addColumn( 'multiline_count', \Magento\Framework\DB\Ddl\Table::TYPE_SMALLINT, null, ['unsigned' => true, 'nullable' => false, 'default' => '1'], 'Multiline Count' )->addColumn( 'validate_rules', \Magento\Framework\DB\Ddl\Table::TYPE_TEXT, '64k', [], 'Validate Rules' )->addColumn( 'is_system', \Magento\Framework\DB\Ddl\Table::TYPE_SMALLINT, null, ['unsigned' => true, 'nullable' => false, 'default' => '0'], 'Is System' )->addColumn( 'sort_order', \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER, null, ['unsigned' => true, 'nullable' => false, 'default' => '0'], 'Sort Order' )->addColumn( 'data_model', \Magento\Framework\DB\Ddl\Table::TYPE_TEXT, 255, [], 'Data Model' )->addForeignKey( $installer->getFkName('customer_eav_attribute', 'attribute_id', 'eav_attribute', 'attribute_id'), 'attribute_id', $installer->getTable('eav_attribute'), 'attribute_id', \Magento\Framework\DB\Ddl\Table::ACTION_CASCADE )->setComment( 'Customer Eav Attribute' ); $installer->getConnection()->createTable($table); /** * Create table 'customer_form_attribute' */ $table = $installer->getConnection()->newTable( $installer->getTable('customer_form_attribute') )->addColumn( 'form_code', \Magento\Framework\DB\Ddl\Table::TYPE_TEXT, 32, ['nullable' => false, 'primary' => true], 'Form Code' )->addColumn( 'attribute_id', \Magento\Framework\DB\Ddl\Table::TYPE_SMALLINT, null, ['unsigned' => true, 'nullable' => false, 'primary' => true], 'Attribute Id' )->addIndex( $installer->getIdxName('customer_form_attribute', ['attribute_id']), ['attribute_id'] )->addForeignKey( $installer->getFkName('customer_form_attribute', 'attribute_id', 'eav_attribute', 'attribute_id'), 'attribute_id', $installer->getTable('eav_attribute'), 'attribute_id', \Magento\Framework\DB\Ddl\Table::ACTION_CASCADE )->setComment( 'Customer Form Attribute' ); $installer->getConnection()->createTable($table); /** * Create table 'customer_eav_attribute_website' */ $table = $installer->getConnection()->newTable( $installer->getTable('customer_eav_attribute_website') )->addColumn( 'attribute_id', \Magento\Framework\DB\Ddl\Table::TYPE_SMALLINT, null, ['unsigned' => true, 'nullable' => false, 'primary' => true], 'Attribute Id' )->addColumn( 'website_id', \Magento\Framework\DB\Ddl\Table::TYPE_SMALLINT, null, ['unsigned' => true, 'nullable' => false, 'primary' => true], 'Website Id' )->addColumn( 'is_visible', \Magento\Framework\DB\Ddl\Table::TYPE_SMALLINT, null, ['unsigned' => true], 'Is Visible' )->addColumn( 'is_required', \Magento\Framework\DB\Ddl\Table::TYPE_SMALLINT, null, ['unsigned' => true], 'Is Required' )->addColumn( 'default_value', \Magento\Framework\DB\Ddl\Table::TYPE_TEXT, '64k', [], 'Default Value' )->addColumn( 'multiline_count', \Magento\Framework\DB\Ddl\Table::TYPE_SMALLINT, null, ['unsigned' => true], 'Multiline Count' )->addIndex( $installer->getIdxName('customer_eav_attribute_website', ['website_id']), ['website_id'] )->addForeignKey( $installer->getFkName('customer_eav_attribute_website', 'attribute_id', 'eav_attribute', 'attribute_id'), 'attribute_id', $installer->getTable('eav_attribute'), 'attribute_id', \Magento\Framework\DB\Ddl\Table::ACTION_CASCADE )->addForeignKey( $installer->getFkName('customer_eav_attribute_website', 'website_id', 'store_website', 'website_id'), 'website_id', $installer->getTable('store_website'), 'website_id', \Magento\Framework\DB\Ddl\Table::ACTION_CASCADE )->setComment( 'Customer Eav Attribute Website' ); $installer->getConnection()->createTable($table); /** * Create table 'customer_visitor' */ $table = $installer->getConnection()->newTable( $installer->getTable('customer_visitor') )->addColumn( 'visitor_id', \Magento\Framework\DB\Ddl\Table::TYPE_BIGINT, null, ['identity' => true, 'unsigned' => true, 'nullable' => false, 'primary' => true], 'Visitor ID' )->addColumn( 'customer_id', \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER, null, [], 'Customer Id' )->addColumn( 'session_id', \Magento\Framework\DB\Ddl\Table::TYPE_TEXT, 64, ['nullable' => true, 'default' => null], 'Session ID' )->addColumn( 'last_visit_at', \Magento\Framework\DB\Ddl\Table::TYPE_TIMESTAMP, null, ['nullable' => false], 'Last Visit Time' )->addIndex( $installer->getIdxName('customer_visitor', ['customer_id']), ['customer_id'] )->setComment( 'Visitor Table' ); $installer->getConnection()->createTable($table); $table = $installer->getConnection() ->newTable( $installer->getTable('customer_log') ) ->addColumn( 'log_id', \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER, null, [ 'nullable' => false, 'identity' => true, 'primary' => true ], 'Log ID' ) ->addColumn( 'customer_id', \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER, null, [ 'nullable' => false ], 'Customer ID' ) ->addColumn( 'last_login_at', \Magento\Framework\DB\Ddl\Table::TYPE_TIMESTAMP, null, [ 'nullable' => true, 'default' => null ], 'Last Login Time' ) ->addColumn( 'last_logout_at', \Magento\Framework\DB\Ddl\Table::TYPE_TIMESTAMP, null, [ 'nullable' => true, 'default' => null ], 'Last Logout Time' ) ->addIndex( $installer->getIdxName( $installer->getTable('customer_log'), ['customer_id'], \Magento\Framework\DB\Adapter\AdapterInterface::INDEX_TYPE_UNIQUE ), ['customer_id'], [ 'type' => \Magento\Framework\DB\Adapter\AdapterInterface::INDEX_TYPE_UNIQUE ] ) ->setComment('Customer Log Table'); $installer->getConnection()->createTable($table); $installer->endSetup(); } }