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. android 仿微信表情雨下落!

    文章链接:https://mp.weixin.qq.com/s/yQXn-YjEFSW1X7A7CcuaVg 众所周知,微信聊天中我们输入一些关键词会有表情雨下落,比如输入「生日快乐」「么么哒」会有相 ...

  2. 仿9GAG制作过程(三)

    有话要说: 这次准备讲述后台服务器的搭建以及前台访问到数据的过程. 成果: 准备: 安装了eclipse 安装了Tomcat7 安装了数据库管理工具:Navicat 搭建服务器: 用eclipse直接 ...

  3. SC命令

    描述:         SC 是用来与服务控制管理器和服务进行通信         的命令行程序. 用法:         sc <server> [command] [service n ...

  4. git 更新分支的信息

    假如服务器的某个分支删除了,但是本地通过git branch -av还是可以看得到,感觉很烦,通过以下命令就可以更新分支的情况. git fetch origin --prune

  5. SQL学习笔记---常用命令

    常用命令 变量 1.声明 declare @变量名 类型,… 2.赋值 1.同时赋值多个变量(可以结合查询) select @变量名=表达式1,表达式2 2.单个赋值(推荐) set @变量名=表达式 ...

  6. python + PyQt5 实现 简易计算器

    忽然想起之前一直想写个简单的计算器,今天就写了一下,界面有些简陋,但是基本功能实现没有问题 以下是源码: # --*-- coding:utf-8 --*-- import sys from PyQt ...

  7. SQLServer之FOREIGN KEY约束

    FOREIGN KEY约束添加规则 1.外键约束并不仅仅可以与另一表的主键约束相链接,它还可以定义为引用另一个表中 UNIQUE 约束的列. 2.如果在 FOREIGN KEY 约束的列中输入非 NU ...

  8. CSS---选择器种类 | 层叠性权重

    一.css选择器种类 1.1,ID选择器 1.2,类选择器 1.3,标签选择器 1.4,后代选择器 1.5,子代选择器 1.6,交集选择器 1.7,并集选择器 1.8,通配符选择器 1.9,属性选择器 ...

  9. HBase源码实战:CreateRandomStoreFile

    /* * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agre ...

  10. Hive:ORC File Format存储格式详解

    一.定义 ORC File,它的全名是Optimized Row Columnar (ORC) file,其实就是对RCFile做了一些优化. 据官方文档介绍,这种文件格式可以提供一种高效的方法来存储 ...