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. MySQL如何判别InnoDB表是独立表空间还是共享表空间

    InnoDB采用按表空间(tablespace)的方式进行存储数据, 默认配置情况下会有一个初始大小为10MB, 名字为ibdata1的文件, 该文件就是默认的表空间文件(tablespce file ...

  2. 如何提高 windows 的使用效率?--巧用运行命令

    windows 操作系统可以使用 win+R 运行一些命令执行任务,好处是:高效.快速.准确. 启动程序 将程序 chrome 写入以下注册表中, SOFTWARE\Microsoft\Windows ...

  3. 虚拟机配置Linux上网环境

    概要:在虚拟机安装CentOS6.5的环境后,配置NAT模式,修改系统文件支持上网. (1)ip地址的配置,IP地址的子网掩码为255.255.255.0. (2)网关的指定,也就是默认路由,当我们需 ...

  4. python接口自动化-get请求

    一.环境安装 1.用pip安装requests模块 >>pip install requests 二.get请求 1.  url 1.1:   response 的返回内容还有很多信息,例 ...

  5. linux文件系統详解

    什么是文件系统 文件系统是操作系统用于明确磁盘或分区上的文件的方法和数据结构,即在存储设备(磁盘)上组织文件的方法.操作系统中负责管理和存储文件信息的软件结构称为文件管理系统,简称文件系统. 从系统角 ...

  6. eclipse换工作空间站快捷键失效解决

    1.找到你可以用快捷键的eclipse的空间所在目录.2.复制.metadata文件.3.找到不可用快捷键的空间目录,把之前复制的文件夹覆盖到现在的.4.重启eclipse.

  7. 基于element ui的级联选择器组件实现的分类后台接口

    今天在做资产管理系统的时候遇到一个分类的级联选择器,前端是用的element的组件,需要后台提供接口支持.     这个组件需要传入的数据结构大概是这样的,详细的可参考官方案例: [{ value: ...

  8. JAVA工程师-蚂蚁金服电话面试

    今天5点半接到一个杭州的电话,是蚂蚁金服打来的,当时心里一阵发慌,由于还在上班,就和面试官约定6点下班之后再来.挂完电话,心里忐忑的不行,感觉自己这也没准备好,那也没准备好.剩下半个小时完全没有心思再 ...

  9. [第二届构建之法论坛] 预培训文档(Java版)

    本博客是第二届构建之法论坛暨软件工程培训活动预培训文档中[适用于结对编程部分的Java版本],需要实验者有一部分Java基础. 目录 Part0.背景 Part1.配置环境 配置JDK Linux 平 ...

  10. C语言之控制语言:分支和跳转

    if语句 #include<stdio.h> int main(void) { const int FREEZING = 0; float temperature; int cold_da ...