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. IEC104协议规约解析

    一.四遥信息体基地址范围 104调度规约有1997年和2002年两个版本,在流程上没有什么变化,02版只是在97版上扩展了遥测.遥信等信息体基体址,区别如下: 类别 1997版基地址 2002版基地址 ...

  2. OPC协议解析-OPC客户端与服务器通讯解析

    1      OPC服务器 OPC服务器, 是指按照OPC基金组织规定的OPC规范群开发的软件驱动.OPC服务器作为中间媒介负责从数据源读取数据再跟另外一端的客户端通信.在 OPC客户端/服务器 的结 ...

  3. 华为云的API调用实践(python版本)

    一.结论: 1.华为云是符合openstack 社区的API,所以,以社区的API为准.社区API见下面的链接. https://developer.openstack.org/api-ref/net ...

  4. iOS----------常见经典错误

    最近使用cocoapods集成友盟  发现几个经典错误 1.clang: error: linker command failed with exit code 1 (use -v to see in ...

  5. 定时删除所有文件夹下的_desktop.ini文件

    写个批处理,删除对应的文件,命名为DELDesktopIni.bat,存于D盘根目录 @echo off :delini for %%a in ( C: D: E: ) DO ( del /f/s/a ...

  6. Lcd(一)显示原理

    一.LCD控制原理 S5PV210处理器中自带LCD控制器,控制LCD的显示,把 LCD 图像数据从一个位于系统内存的 video buffer 传送到一个外部的 LCD 驱动器接口. 类型: STN ...

  7. Python爬虫之正则表达式(2)

    # 最常规的匹配 import re content = 'Hello 123 4567 World_This is a Regex Demo' print(len(content)) result ...

  8. Python基础——7面向对象高级编程

    实例与类动态添加方法 实例添加属性: def Student(object): pass s = Student() s.name = ‘syz’ 实例添加方法 from types import M ...

  9. (生活)Photoshop入门(不定时更新)

    我可能是想找个工作以外的事情做一下. 目标:我要自学网PhotoShop商业修图. 笔记: .图层 .1总结: 1.1.1图层就好像画画的一张纸,但是每一层又互不影响. 1.1.2图层蒙版(覆盖一层玻 ...

  10. 【Python 14】分形树绘制2.0(重复五角星+Turtle库文档)

    1.案例描述 加入循环操作绘制重复不同大小的图形 2.案例分析 3.turtle库补充 # 画笔控制函数 turtle.penup() # 抬起画笔,之后移动画笔不绘制图形 turtle.pendow ...