tp5 数据库迁移工具 migrate&seed

tp5.0时使用migrate工具,composer安装

composer require topthink/think-migration=1.*

注意,tp5.0对应1版本的migration工具,tp5.1及以上对应2版本的migration工具

查看指令

php think

创建migrate文件(用来建表)

php migrate create:SqUserLogs

在applicaton/database/migrations 文件夹下会创建一个文件 20200318060333_sq_user_logs.php

<?php

use think\migration\Migrator;use think\migration\db\Column;

class SqUserLogs extends Migrator
{
    /**
     * Change Method.
     *
     * Write your reversible migrations using this method.
     *
     * More information on writing migrations is available here:
     * http://docs.phinx.org/en/latest/migrations.html#the-abstractmigration-class
     *
     * The following commands can be used in this method and Phinx will
     * automatically reverse them when rolling back:
     *
     *    createTable
     *    renameTable
     *    addColumn
     *    renameColumn
     *    addIndex
     *    addForeignKey
     *
     * Remember to call "create()" or "update()" and NOT "save()" when working
     * with the Table class.
     */
    public function change()
    {
        $table = $this->table(‘sq_user_logs‘,array(‘engine‘=>‘InnoDB ‘));//InnoDB //MyISAM
        $table ->addColumn(‘uid‘, ‘integer‘, array(‘comment‘=>‘用户在users表中的id‘))
        ->addColumn(‘access_time‘,‘integer‘,array(‘comment‘=>‘出入时间‘))
        ->addColumn(‘access_status‘,‘boolean‘,array(‘default‘=>0,‘comment‘=>‘出入状态,0表示出门,1表示回家‘))
        ->addIndex(array(‘id‘), array(‘unique‘=>true))
        ->create();
    }
   /**
    * Migrate Up.
    */
   public function up()
   {
        // 创建表格时
   }

   /**
    * Migrate Down.
    */
   public function down()
   {
        // 删除表格时
   }
}

官方文档不能看了,可以通过源码学习使用,在 项目目录/vendor/topthink/thinkmigration/src/command 中可以找到源码

创建seed文件(用来填充测试数据)

php think seed:create SqUserLogs

在application/database/seeds 文件夹下会创建文件 SqUserLogs.php

<?php

use think\migration\Seeder;

class SqUserLogs extends Seeder
{
    /**
     * Run Method.
     *
     * Write your database seeder using this method.
     *
     * More information on writing seeders is available here:
     * http://docs.phinx.org/en/latest/seeding.html
     */
    public function run()
    {
        $data = [
            [1, 1],
            [2, 2],
            [1, 1],
            [3, 2],
            [1, 1],
            [2, 2]
        ];
        foreach($data as $v){
            $this->table(‘sq_user_logs‘)->insert([
                ‘uid‘=>$v[0], ‘access_time‘=>time() + 360, ‘access_status‘=>$v[1]
                ])->save();
        }
    }
}

原文地址:https://www.cnblogs.com/YC-L/p/12635731.html

时间: 2024-10-08 20:21:57

tp5 数据库迁移工具 migrate&seed的相关文章

TP5数据库操作方法

一.TP5数据库操作方法 1.name()方法作用 : 指定默认的数据表名(不含前缀)示例 : Db::name('weiba_post');返回 : Db对象 2.setTable()方法作用 : 指定默认数据表名(含前缀)示例 : Db::setTable('op_weiba_post');返回 : Db对象 3.getTable()方法作用 : 得到当前或者指定名称的数据表(有前缀)示例 : Db::getTable('weiba_post'); //返回op_weiba_post,带有表

tp5 migrate数据库迁移工具

tp5相对与tp3.2有很大的不同 migrate是其中一点,通过migrate程序员可以在php代码中创建数据库修改回滚等操作 首先下载migrate扩展,命令行到当前项目目录下执行 1 composer require topthink/think-migration 通过使用php think命令可以查看migrate是否成功下载 使用migrate:create migrate文件名(首字母大写的驼峰法),在database下生成migrate文件 有可能建立失败提示没有什么方法一般是c

tp5 数据库相关操作笔记

这里如何连接多个数据库? 1,在conif.php文件中添加一个数据库配置(把database.php文件内容复制一份过来),这里取名为db2 2,在控制器的方法中使用 mysql中的参数绑定 mysql中占位符绑定 增删改查? 1 , 原生增删改查在TP中 直接使用Db::execute('原生语言') 2, 通过查询构造器实现增删改查 2.1 增 注意:如果想利用配置里面的表前缀 2.2 删 2.3 改 2.4 查 建议的查询方式? 特色查询? 1,如果如果某字段存的是时间戳,可以直接按照时

django 远程数据库mysql migrate失败报error 1045之 解决方案

Access denied for user 'root'@'localhost' (using password: YES)     ERROR 1045: Access denied for user: '[email protected]' (Using password: YES)前两天也偶尔出现这个错误,也没在意,因为我重新修改一下mysql的root密码后又可以用了,但昨天却不行,我把root密码修改以后虽然当时能用,一旦重新进入就都不能用了,可我的密码明明没有错啊?今天终于找到了原

tp5数据库链接

1在config/database.php中配置 1.1直接 return [ // 数据库类型 'type' => 'mysql', // 服务器地址 'hostname' => '127.0.0.1', // 数据库名 'database' => 'hainan', // 用户名 'username' => 'root', // 密码 'password' => 'root', // 端口 'hostport' => '', // 连接dsn 'dsn' =>

tp5数据库——链式操作

链式操作 数据库提供的链式操作方法,可以有效的提高数据存取的代码清晰度和开发效率,并且支持所有的CURD操作. 使用也比较简单,假如我们现在要查询一个User表的满足状态为1的前10条记录,并希望按照用户的创建时间排序 ,代码如下: Db::table('think_user') ->where('status',1) ->order('create_time') ->limit(10) ->select(); 这里的where.order和limit方法就被称之为链式操作方法,除

四十七:数据库之alembic数据库迁移工具的基本使用

在一般情况下,如果修改了模型,如增加或者删除了字段,SQLAlchemy是不会更新的,这就需要使用alembic来实现 使用alembic步骤:一:定义好模型二:使用alembic创建一个仓库:alembic init 仓库名三:修改配置文件 1.在alembic.ini中,给SQLAlchemy.url设置数据库的连接方式,这个连接方式与SQLAlchemy的方式一样 2.在alembic/env.py中的target_metadata设置模型的Base.metadata,前提是要导入Base

tp5 数据库Db查询操作

$data = Db::query('select * from tf_action'); $data = Db::query('select * from tf_action where id > ? and id < ?',[1,10]); $sql = Db::getLastSql(); 查询用query. 删除,增加,修改,用execute. $data = Db::table('tf_action')->select(); 这里用的是表全名. $data = Db::name(

8天掌握EF的Code First开发系列之3 管理数据库创建,填充种子数据以及LINQ操作详解

本篇目录 管理数据库创建 管理数据库连接 管理数据库初始化 填充种子数据 LINQ to Entities详解 什么是LINQ to Entities 使用LINQ to Entities操作实体 LINQ操作 懒加载和预加载 插入数据 更新数据 删除数据 本章小结 本人的实验环境是VS 2013 Update 5,windows 10,MSSQL Server 2008. 上一篇<Code First开发系列之领域建模和管理实体关系>,我们主要介绍了EF中“约定大于配置”的概念,如何创建数据