laravel框架之数据迁移和数据填充

一.数据迁移

1.创建一个迁移

1>使用artisan命令make:migration来创建一个新的迁移:  

  php artisan make:migration create_sutdents_table

新的迁移位于database/migrations目录下,每个迁移文件名都包含时间戳从而允许Laravel判断其顺序。

2>其他一些选项

  --table用来指定表名

    php artisan make:migration create_students_table --table=students

  --create创建一个新的数据表(有表名和基本字段)

    php artisan make:migration create_students_table --create=students

  --path选项用来自定义输出路径

    php artisan make:migration create_students_table --path=app/migrations

  指定生成迁移的自定义输出路径,在执行make:migration命令时可以使用--path选项,提供的路径应该是相对于应用根目录的。

  下面是我生成迁移文件的情形

  

三个迁移文件的主要内容如下,感受下up和down方法中内容的不同

//1>php artisan make:migration create_sutdents_table中的内容
public function up()
{
//
}

public function down()
{
//
}

//2>php artisan make:migration create_sutdents_table --table=students中的内容
public function up()
{
Schema::table(‘students‘, function (Blueprint $table) {
//
});
}

public function down()
{
Schema::table(‘students‘, function (Blueprint $table) {
//
});
}

//3>php artisan make:migration create_sutdents_table --create=students中的内容
public function up()
{
Schema::create(‘students‘, function (Blueprint $table) {
$table->increments(‘id‘);
$table->timestamps();
});
}

public function down()
{
Schema::drop(‘students‘);
}

2.迁移结构

迁移类包含了两个方法:up和down。up方法用于新增表,列或者索引到数据库,而down方法就是up方法的反操作,和up里的操作相反。

关于具体如何编辑前一结构,可以参见官方文档

3.实施迁移

在控制台执行以下命令,即可执行迁移文件,生成或更新相应的表。

  php artisan migrate

4.回滚迁移

1>回滚上一次的迁移

php artisan migrate:rollback

2>回滚所有迁移

php artisan migrate:reset

3> 回滚所有迁移并且再执行一次

php artisan migrate:refresh

5.其它

1>使用help来查看信息

  <1>php artisan help make:migration来查看更多的选项

    

<2>php artisan help migrate

  

<3>php artisan help migrate:refresh

  

2>我们有多个迁移文件的时候,运行迁移命令后,是否所有文件都会执行

  我们现在运用基本的迁移 php artisan migrate

    第一次运行,显示:tabale created successfully

    第二次运行,显示:nothing to migrate

  因为我们的数据库已经迁移成功没有变化了,所以不会再执行上次的文件

  接下来我们运行回滚操作 php artisan migrate:rollback

    第一次运行,显示:回滚文件信息

    第二次运行,显示:nothing to rollback

  同样,已经没有可以回滚的信息了,不会重复执行

  

3>php artisan migrate:refresh操作

  

二.数据填充

1.生成一个seeder文件

  你可以通过 make:seeder artisan命令来生成一个 Seeder。所有通过框架生成的 Seeder 都将被放置在 database/seeds 路径:

    php artisan make:seeder StudentsTableSeeder

  在 seeder 类里只有一个默认方法:run。我们可以在这个run方法中给数据库添加任何数据(在这里我们可以使用查询构造器或者Eloquent模型工厂)

  我们给run方法添加如下内容

<?php

use Illuminate\Database\Seeder;

class StudentsTableSeeder extends Seeder
{
    /**
    * Run the database seeds.
    *
    * @return void
    */

    public function run(){
        DB::table(‘students‘)->insert([
            ‘name‘ => str_random(10),
        ]);
    }
}                

  然后我们运行命令,调用StudentsTableSeeder类 php artisan db:seed --class=StudentsTableSeeder

  我们可以发现数据表中新插入了一条数据

  这里要注意一个问题,因为我设计数据库的时候增加了created_at和updated_at字段,使用查询构造器并不能自动更新这两个字段

2.Laravle 默认为你定义了一个 DatabaseSeeder 类。

  你可以在这个类中使用 call 方法来运行其它的 seed 类,以借此控制数据填充的顺序。

  我们将我们生成的StudentsTableSeeder类加入到 run方法中

<?php

use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;

class DatabaseSeeder extends Seeder
{
    /**
    * Run the database seeds.
    *
    * @return void
    */
    public function run(){
        Model::unguard();

        // $this->call(UserTableSeeder::class);
        //这里我们可以调用更多生成的填充数据类,便于管理

        $this->call(StudentsTableSeeder::class);
        Model::reguard();
    }
}     

  我们运行命令,调用DatabaseSeeder类

    php artisan db:seed

  我们同样可以发现数据表中多了一条数据

3.我们刚才在run方法中使用的时候查询构造器,我们还可以使用Eloquent模型工厂

  首先,学习如何定义你的工厂,一旦工厂被定义(位于database/fatories文件夹下),就能使用 factory 这个辅助函数函数来添加数据到数据库。

时间: 2024-10-07 10:16:58

laravel框架之数据迁移和数据填充的相关文章

laravel中的数据迁移和数据填充

laravel中的数据迁移和数据填充 标签(空格分隔): php 生成迁移文件两种方式: 1 新建一个表的迁移文件 php artisan make:migration create_students_table --create=students 2 创建模型的时候同时创建迁移文件 php artisan make:model Model\Article -m 创建迁移文件和执行 1 在 up 方法里完成数据表字段的创建 2 执行命令 php artisan migrate 生成填充文件 ph

Laravel 5.2 数据库迁移和数据填充

一.数据库迁移 Laravel 的数据库迁移提供了对数据库.表.字段.索引的一系列相关操作. 1. 创建迁移 使用 Artisan 命令  php artisan make:migration create_links_table 这将在 database/migrations 目录下生成一个名为 2017_05_06_151645_create_links_table.php 的友情链接迁移类.其中,名字的前半段 "2017_05_06_151645_" 是 Laravel 增加的时

laravel模型建立和数据迁移和数据填充(数据填充没有成功)未完

开始创建我们的第一个 Article 模型及其对应迁移文件了,我们在项目根目录运行如下 Artisan 命令一步到位: php artisan make:model Article -m -m 是 --migration 的缩写,告知 Artisan 在创建模型同时创建与之对应的迁移文件(我使用的是 Laradock 作为开发环境): 当然,还需要编辑默认生成的迁移文件: use Illuminate\Support\Facades\Schema; use Illuminate\Database

一句命令完成MySQL的数据迁移(轻量级数据)

有时候我们需要将数据库迁移的本地,对于数据量不大的数据完全可以采用下面的命令实现,如果数据量比较大,建议使用专业的工具,例如帝国备份王等 用管道符将mysqldump的输出流和mysql的输入流串接在一起,管道符真是一个伟大的发明. mysqldump -uXXX -pYYY -h192.168.4.98 -P3306 DBNAME --skip-lock-tables | mysql -uroot -h127.0.0.1 DBNAME 

阿里云Linux服务器,挂载硬盘并将系统盘数据迁移到数据盘

因为之前用宝塔上线,宝塔只挂载了系统盘50G,打开阿里云云盘列表发现系统盘无法直接升级,故另买一块数据盘挂载到Linux服务器下,下面根据网上教程再结合我实际情况讲解一下实际操作,其实非常easy linux命令输入  :  df  -h 此时发现Linux服务器只挂载了一块50G的硬盘,tmpfs是临时目录和文件,而阿里云另买一块硬盘则没有显示出来 故继续输入  :fdisk  -l 发现linux目录下有一块 /dev/vdb硬盘,下面我们就将vdb这块硬盘挂载到Linux目录下 输入命令:

EF 中 Code First 的数据迁移以及创建视图

写在前面: EF 中 Code First 的数据迁移网上有很多资料,我这份并没什么特别.Code First 创建视图网上也有很多资料,但好像很麻烦,而且亲测好像是无效的方法(可能是我太笨,没搞成功),我摸索出了一种简单有效的方法,这里分享给大家. EF是Entity Framework(实体框架)的简写,是微软出品的用来操作数据库的一个框架,会ASP.NET MVC的朋友对他肯定都不陌生.由于学艺不精,我对EF存在一疑虑,就不以[提问]的方式来问了,我以[总结]的方式来表达,如果总结有误的地

Mycat生产实践---数据迁移与扩容实践

1 离线扩容缩容 工具目前从mycat1.6开始支持. 一.准备工作 1.mycat所在环境安装mysql客户端程序 2.mycat的lib目录下添加mysql的jdbc驱动包 3.对扩容缩容的表所有节点数据进行备份,以便迁移失败后的数据恢复 二.扩容缩容步骤 1.复制schema.xml.rule.xml并重命名为newSchema.xml.newRule.xml放于conf目录下 2.修改newSchema.xml和newRule.xml配置文件为扩容缩容后的mycat配置参数(表的节点数.

[转]一种可以避免数据迁移的分库分表scale-out扩容方式

原文地址:http://jm-blog.aliapp.com/?p=590 目前绝大多数应用采取的两种分库分表规则 mod方式 dayofweek系列日期方式(所有星期1的数据在一个库/表,或所有?月份的数据在一个库表) 这两种方式有个本质的特点,就是离散性加周期性. 例如以一个表的主键对3取余数的方式分库或分表: 那么随着数据量的增大,每个表或库的数据量都是各自增长.当一个表或库的数据量增长到了一个极限,要加库或加表的时候, 介于这种分库分表算法的离散性,必需要做数据迁移才能完成.例如从3个扩

CoreData的数据迁移

CoreData的数据迁移 很多人说CoreData坑多,现在才感觉到,今天上午写代码的时候,发现了一个大问题. 过程如下,之前我自己给coredata的实体添加了几个字段,后来网上的一个用户说我们的app进去后闪退,但是我自己从新冲appstore下载了一个发现并没有哪些问题.于是这个事就过去了.第二天我run我自己的新程序的时候,发现coredata一保存在save方法的时候,就直接闪退.连错误都不报.导致我很崩溃... 网上一查,原来是要数据迁移.下面是我的一些记录,希望能帮助到别人. 其