Question

<?php namespace Magneto\BookFreeLayout\Setup;
use Magento\Framework\Setup\InstallSchemaInterface;
use Magento\Framework\Setup\ModuleContextInterface;
use Magento\Framework\Setup\SchemaSetupInterface;
class InstallSchema implements InstallSchemaInterface
{

 public function install(SchemaSetupInterface $setup, 
 ModuleContextInterface $context)
 {

 $newsTableName = $setup->getTable('magneto_book_free_layout');

if($setup->getConnection()->isTableExists($newsTableName) != true) {

  $newsTable = $setup->getConnection()
      ->newTable($newsTableName)
      ->addColumn(
          'id',
          \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
          null,
          ['identity' => true, 'unsigned' => true, 'nullable' => false, 'primary' => true],
          'id'
      )
      ->addColumn(
          'name',
          \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
          255,
          ['nullable' => false, 'default' => ''],
            'name'
      )
      ->addColumn(
          'email',
          \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
          null,
          ['nullable' => false, 'default' => ''],
            'email'
      )
      ->addColumn(
          'phoneno',
          \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
          null,
          ['nullable' => false, 'unsigned' => true],
            'phoneno'
      )
      ->addColumn(
          'heigth',
          \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
          null,
          ['nullable' => false],
            'heigth'
      )
      ->addColumn(
          'width',
          \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
          null,
          ['nullable' => false],
            'width'
      )
      ->addColumn(
          'image',
          \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
          null,
          ['nullable' => false],
            'image'
      )
      ->addColumn(
          'entity_id',
          \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
          null,
          ['nullable' => false],
            'entity_id'
      )
      ->addColumn(
          'status',
          \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
          null,
          ['nullable' => false,'default' => 0],
            'status'
      )
      ->addForeignKey(
            $installer->getFkName(
                'magneto_book_free_layout',
                'entity_id',
                'catalog_product_entity',
                'entity_id'
            ),
            'entity_id',
            $installer->getTable('catalog_product_entity'), 
            'entity_id',
            \Magento\Framework\DB\Ddl\Table::ACTION_CASCADE
        )
      ->setComment("News Table");



  $setup->getConnection()->createTable($newsTable);
}
}
}
Was it helpful?

Solution

Your entity_id column should look like this.

->addColumn(
      'entity_id',
      \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
      null,
      ['unsigned' => true, 'nullable' => false, 'index' => true],
      'entity_id'
)
Licensed under: CC-BY-SA with attribution
Not affiliated with magento.stackexchange
scroll top