Magento 2 安装数据表

  • 第1步:安装脚本

    • 首先,我们将为CRUD模型创建数据库表。为此,我们需要插入安装文件

      app/code/Mageplaza/HelloWorld/Setup/InstallSchema.php
      

        code:

      <?php
      /**
      * Created by PhpStorm.
      * User: jerryxu
      * Date: 2018/8/11
      * Time: 上午12:22
      */ namespace Mc\helloworld\Setup; class InstallSchema implements \Magento\Framework\Setup\InstallSchemaInterface
      { public function install(\Magento\Framework\Setup\SchemaSetupInterface $setup, \Magento\Framework\Setup\ModuleContextInterface $context)
      {
      $installer = $setup;
      $installer->startSetup();
      if (!$installer->tableExists('mc_helloworld_post')) {
      $table = $installer->getConnection()->newTable(
      $installer->getTable('mc_helloworld_post')
      )
      ->addColumn(
      'post_id',
      \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
      null,
      [
      'identity' => true,
      'nullable' => false,
      'primary' => true,
      'unsigned' => true,
      ],
      'Post ID'
      )
      ->addColumn(
      'name',
      \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
      255,
      ['nullable => false'],
      'Post Name'
      )
      ->addColumn(
      'url_key',
      \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
      255,
      [],
      'Post URL Key'
      )
      ->addColumn(
      'post_content',
      \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
      '64k',
      [],
      'Post Post Content'
      )
      ->addColumn(
      'tags',
      \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
      255,
      [],
      'Post Tags'
      )
      ->addColumn(
      'status',
      \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
      1,
      [],
      'Post Status'
      )
      ->addColumn(
      'featured_image',
      \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
      255,
      [],
      'Post Featured Image'
      )
      ->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')
      ->setComment('Post Table');
      $installer->getConnection()->createTable($table); $installer->getConnection()->addIndex(
      $installer->getTable('mc_helloworld_post'),
      $setup->getIdxName(
      $installer->getTable('mc_helloworld_post'),
      ['name','url_key','post_content','tags','featured_image'],
      \Magento\Framework\DB\Adapter\AdapterInterface::INDEX_TYPE_FULLTEXT
      ),
      ['name','url_key','post_content','tags','featured_image'],
      \Magento\Framework\DB\Adapter\AdapterInterface::INDEX_TYPE_FULLTEXT
      );
      }
      $installer->endSetup();
      }
      }
    • 请注意,Magento将在安装模块时首次自动运行此文件。如果之前安装了模块,则需要升级模块并将表创建代码写入该文件夹中的UpgradeSchema.php,并将属性更改为setup_version大于当前安装版本的module.xmlat app/code/Mageplaza/HelloWorld/etc/module.xml。  
      内容如下:

      <?xml version="1.0"?>
      <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
      <module name="Mc_Mysize" setup_version="1.1.0">
      </module>
      </config>

      module.xml文件中,我们改变了属性1.1.0大于setup_version
      文件: app/code/Mageplaza/HelloWorld/Setup/UpgradeSchema.php

      namespace mc\HelloWorld\Setup;
      
      use Magento\Framework\Setup\UpgradeSchemaInterface;
      use Magento\Framework\Setup\SchemaSetupInterface;
      use Magento\Framework\Setup\ModuleContextInterface; class UpgradeSchema implements UpgradeSchemaInterface
      {
      public function upgrade( SchemaSetupInterface $setup, ModuleContextInterface $context ) {
      $installer = $setup; $installer->startSetup(); if(version_compare($context->getVersion(), '1.1.0', '<')) {
      if (!$installer->tableExists('mc_helloworld_post')) {
      $table = $installer->getConnection()->newTable(
      $installer->getTable('mc_helloworld_post')
      )
      ->addColumn(
      'post_id',
      \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
      null,
      [
      'identity' => true,
      'nullable' => false,
      'primary' => true,
      'unsigned' => true,
      ],
      'Post ID'
      )
      ->addColumn(
      'name',
      \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
      255,
      ['nullable => false'],
      'Post Name'
      )
      ->addColumn(
      'url_key',
      \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
      255,
      [],
      'Post URL Key'
      )
      ->addColumn(
      'post_content',
      \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
      '64k',
      [],
      'Post Post Content'
      )
      ->addColumn(
      'tags',
      \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
      255,
      [],
      'Post Tags'
      )
      ->addColumn(
      'status',
      \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
      1,
      [],
      'Post Status'
      )
      ->addColumn(
      'featured_image',
      \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
      255,
      [],
      'Post Featured Image'
      )
      ->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')
      ->setComment('Post Table');
      $installer->getConnection()->createTable($table); $installer->getConnection()->addIndex(
      $installer->getTable('mc_helloworld_post'),
      $setup->getIdxName(
      $installer->getTable('mc_helloworld_post'),
      ['name','url_key','post_content','tags','featured_image'],
      \Magento\Framework\DB\Adapter\AdapterInterface::INDEX_TYPE_FULLTEXT
      ),
      ['name','url_key','post_content','tags','featured_image'],
      \Magento\Framework\DB\Adapter\AdapterInterface::INDEX_TYPE_FULLTEXT
      );
      }
      } $installer->endSetup();
      }
      }

        在此之后请运行此命令行:

    • php bin/magento setup:upgrade && php bin/magento setup:static-content:deploy -f
    • InstallSchema.php 用于创建数据库结构。如果要将数据安装到创建的表中,则需要使用 app/code/Mageplaza/HelloWorld/Setup/InstallData.php

      请查看Magento中的一些InstallData文件,了解如何使用它。

      - vendor/magento/module-tax/Setup/InstallData.php
      - vendor/magento/module-customer/Setup/InstallData.php
      - vendor/magento/module-catalog/Setup/InstallData.php
    • 如上所述,那些安装文件将用于第一次安装模块。如果要在升级模块时更改数据库,请尝试使用UpgradeSchema.php 和  UpgradeData.php
  • 完成创建 

Magento 2 安装数据表的更多相关文章

  1. mysql笔记1—安装、配置和基础的数据表操作

    本篇笔记主要分为两部分: 1,安装完毕之后的简单配置 2,数据的类型.简单的数据表操作命令 一.mysql安装完毕之后 windows和linux环境,除mysql的安装.配置有所不同,其他操作一样, ...

  2. 改用C++生成自动化数据表

    改用C++生成自动化数据表 前面的文章中,我们讨论了使用一个基于.NET的第三方程序库来从程序中来生成数据表.在我看来,这整个思路是非常有用的,例如为显示测试结果.我经常会自己在博客中尝试各种像这样的 ...

  3. 使用Entity Framework通过code first方式创建数据库和数据表

    开发环境 WIN10 Entity Framework6.0  MVC5.0  开发工具 VS2015  SqlServer2012 1.创建上下文Context继承DbContext,并创建其他的业 ...

  4. MySQL的数据库,数据表,数据的操作

    数据库简介 概念 什么是数据库?简单来说,数据库就是存储数据的"仓库", 但是,光有数据还不行,还要管理数据的工具,我们称之为数据库管理系统! 数据库系统 = 数据库管理系统 + ...

  5. python Django教程 之 模型(数据库)、自定义Field、数据表更改、QuerySet API

    python  Django教程  之 模型(数据库).自定义Field.数据表更改.QuerySet API 一.Django 模型(数据库) Django 模型是与数据库相关的,与数据库相关的代码 ...

  6. ubuntu下面mysql,通过载入txt文件初始化数据表

    环境:ubuntu12.04   mysql(通过apt安装) (1)根据数据表中的属性列,对应在txt中构造记录(一行对应一条记录),不同属性之间通过tab键(以/root目录下构建的init.tx ...

  7. MySQL(一) 数据表数据库的基本操作

    序言 这类文章,记录我看<MySQL5.6从零开始学>这本书的过程,将自己觉得重要的东西记录一下,并有可能帮助到你们,在写的博文前几篇度会非常基础,只要动手敲,跟着我写的例子全部实现一遍, ...

  8. 在Openfire中使用自己的数据表之修改配置文件

    目前我使用的Openfire版本是3.10.3,以下使用说明也是在这个版本上做的修改. Openfire提供了两种方式使用用户数据表.一种是安装完成之后默认实现的org.jivesoftware.op ...

  9. 用SQLSERVER里的bcp命令或者bulkinsert命令也可以把dat文件导入数据表

    用SQLSERVER里的bcp命令或者bulkinsert命令也可以把dat文件导入数据表 下面的内容的实验环境我是在SQLSERVER2005上面做的 之前在园子里看到两篇文章<C# 读取纯真 ...

随机推荐

  1. SBC数据格式转换软件

    北京博信施科技有限公司是一家专业从事数据格式转换.数据处理领域研发软件产品和解决方案实施的技术型公司.在当今信息时代,PDF文档格式是在Internet上进行电子文档发行和数字化信息传播的理想文档格式 ...

  2. (办公)SpringBoot和swagger2的整合.

    因为开发项目的接口需要给app,小程序测试,所以用swagger. 1.pom.xml: <dependency><!--添加Swagger依赖 --> <groupId ...

  3. Maven替换为国内仓库

    <mirror> <id>nexus-aliyun</id> <mirrorOf>central</mirrorOf> <name&g ...

  4. sql server中嵌套事务*

    转自 https://www.cnblogs.com/guanjie20/archive/2013/02/17/2914488.html 我们在写事务时经常遇到的问题如下: 消息 266,级别 16, ...

  5. RHEL6 SoftRaid 更换故障硬盘

    1.手工fail一块硬盘 #mdadm /dev/md0 -f /dev/sdb 2.移除损坏硬盘: #mdadm /dev/md0 -r /dev/sdb 3.添加新的硬盘到已有阵列 mdadm / ...

  6. python:过滤字符串中的字母数字特殊符号

    今天遇到的字符串处理的问题,记录一下方便使用 str1 = input('请输入一个字符:') #初始化字符.数字.空格.特殊字符的计数 lowercase = 0 uppercase = 0 num ...

  7. 多线程控制工具类--倒计时器CountDownLatch的使用(模仿火箭发射)

    package com.thread.test.Lock; import java.util.Random; import java.util.concurrent.CountDownLatch; i ...

  8. Extending the Yahoo! Streaming Benchmark

    could accomplish with Flink back at Twitter. I had an application in mind that I knew I could make m ...

  9. slice()和splice()区别

    1.slice(start,end):方法可从已有数组中返回选定的元素,返回一个新数组,包含从start到end(不包含该元素)的数组元素. 注意:该方法不会改变原数组,而是返回一个子数组,如果想删除 ...

  10. 1.5 下载和安装VMWare

    搭建虚拟环境一般都有两种方法,一种是系统自带的虚拟机,还有一种是下载VMware,Win8和Win10都自带有虚拟机,但是都不是自动开启的,所以我们必须手动开启. 一.Win10开启虚拟机 在命令行输 ...