【问题标题】:Magento 2 create multi db table in moduleMagento 2 在模块中创建多数据库表
【发布时间】:2018-01-15 20:30:49
【问题描述】:

我创建了一个名为 MyCompany\MyModule 的模块。在这个模块中,我想创建大约 3 或 4 个 db 表,例如:greeting_message、greeting_post、greeting_comment。然后,我在MyCompany\MyModule 下创建了Setup 文件夹并添加了一个文件InstallSchema.php 代码如下:

<?php

/**
 * Copyright © 2016 Magento. All rights reserved.
 * See COPYING.txt for license details.
 */

namespace MyCompany\MyModle\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)
    {
        /**
         * Create table 'greeting_message'
         */
        $table = $setup->getConnection()
            ->newTable($setup->getTable('greeting_message'))
            ->addColumn(
                'greeting_id',
                \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
                null,
                ['identity' => true, 'unsigned' => true, 'nullable' => false, 'primary' => true],
                'Greeting ID'
            )
            ->addColumn(
                'message',
                \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
                255,
                ['nullable' => false, 'default' => ''],
                'Message'
            )->setComment("Greeting Message table");
        $setup->getConnection()->createTable($table);
    }
}

似乎我们只在文件中创建了 1 个表。那么,有没有一些方法可以在一个模块中创建多 db 表?

【问题讨论】:

    标签: mysql database magento2


    【解决方案1】:

    对一张表使用复制粘贴代码,对另一张表执行相同操作。以下是所有表格,将列更改为您的要求。

    <?php
    
    /**
    * Copyright © 2016 Magento. All rights reserved.
    * See COPYING.txt for license details.
    */
    
    namespace MyCompany\MyModle\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
        )
        {
            /**
             * Create table 'greeting_message'
             */
            $table = $setup->getConnection()
                ->newTable($setup->getTable('greeting_message'))
                ->addColumn(
                    'greeting_id',
                    \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
                    null,
                    [
                        'identity' => true,
                        'unsigned' => true,
                        'nullable' => false,
                        'primary' => true
                    ],
                    'Greeting ID'
                )
                ->addColumn(
                    'message',
                    \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
                    255,
                    [
                        'nullable' => false,
                        'default' => ''
                    ],
                    'Message'
                )
                ->setComment("Greeting Message table");
    
            $setup->getConnection()->createTable($table);
    
            /**
             * Create table 'greeting_post'
             */
            $table = $setup->getConnection()
                ->newTable($setup->getTable('greeting_post'))
                ->addColumn(
                    'greeting_id',
                    \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
                    null,
                    [
                        'identity' => true,
                        'unsigned' => true,
                        'nullable' => false,
                        'primary' => true
                    ],
                    'Greeting ID'
                )
                ->addColumn(
                    'message',
                    \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
                    255,
                    [
                        'nullable' => false,
                        'default' => ''
                    ],
                    'Message'
                )->setComment("Greeting Message table");
    
            $setup->getConnection()->createTable($table);
    
            /**
             * Create table 'greeting_comment'
             */
            $table = $setup->getConnection()
                ->newTable($setup->getTable('greeting_comment'))
                ->addColumn(
                    'greeting_id',
                    \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
                    null,
                    [
                        'identity' => true,
                        'unsigned' => true,
                        'nullable' => false,
                        'primary' => true
                    ],
                    'Greeting ID'
                )
                ->addColumn(
                    'message',
                    \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
                    255,
                    [
                        'nullable' => false,
                        'default' => ''
                    ],
                    'Message'
                )->setComment("Greeting Message table");
    
            $setup->getConnection()->createTable($table);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2012-07-20
      • 2016-03-21
      • 1970-01-01
      • 2017-12-02
      • 2014-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多