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 增加的时间戳。后半段 "create_links_table.php" 是表名字。
2. 编写逻辑
然后,打开这个迁移类 2017_05_06_151645_create_links_table.php ,里面有两个方法: up() 和 down() 。up() 方法建表,down() 方法删表。
<?php use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration; class CreateLinksTable extends Migration
{
/**
* 执行迁移
*
* @return void
*/
public function up()
{
Schema::create('links', function (Blueprint $table){
$table->engine = 'MyISAM';
$table->increments('id');
$table->string('name')->default('')->comment('名称');
$table->string('title')->default('')->comment('标题');
$table->string('url')->default('')->comment('地址');
$table->integer('sort')->default(50)->comment('排序');
});
} /**
* 回滚迁移
*
* @return void
*/
public function down()
{
Schema::drop('links');
}
} 2017_05_06_151645_create_links_table.php
3. 执行迁移
使用 Artisan 命令 php artisan migrate
现在,数据库中已经创建了一张 hd_links 表 和 一张记录迁移的表 hd_migrations ("hd_" 是配置的表前缀):
注意:如果手动删除了迁移类并且文件无法重新创建,使用 composer dump-autoload 命令优化一下自动加载就可以重新创建迁移了。
二、数据填充
可用于测试,为数据库中的表填充一些数据。
1. 创建填充
使用 Artisan 命令 php artisan make:seeder LinksTableSeeder
这将在 database/seeds 目录下生成一个名为 LinksTableSeeder.php 的友情链接填充类。
2. 编写逻辑
然后,打开这个 LinksTableSeeder.php 文件,添加两条测试记录。
<?php use Illuminate\Database\Seeder; class LinksTableSeeder extends Seeder
{
/**
* 运行数据库填充
*
* @return void
*/
public function run()
{
$data = [
[
'name' => 'Laravel 中文社区',
'title' => 'Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区 - Powered by PHPHub',
'url' => 'https://laravel-china.org/',
'sort' => '49'
],
[
'name' => 'GitHub',
'title' => 'GitHub is where people build software. More than 21 million people use...',
'url' => 'https://github.com',
'sort' => '49'
]
]; DB::table('links')->insert($data);
}
}
3. 调用填充
在 database/seeds 目录下的 DatabaseSeeder.php 这个数据库填充类中,在 run() 方法内调用填充。
DatabaseSeeder.php 文件内容:
<?php use Illuminate\Database\Seeder; class DatabaseSeeder extends Seeder
{
/**
* 运行数据库填充
*
* @return void
*/
public function run()
{
$this->call(LinksTableSeeder::class);
}
}
4.执行填充
使用 Artisan 命令 php artisan db:seed
现在,数据库中的 hd_links 表就有了2条记录:
Laravel 5.2 数据库迁移和数据填充的更多相关文章
- Laravel 实践之路: 数据库迁移与数据填充
数据库迁移实际上就是对数据库库表的结构变化做版本控制,之前对数据库库表结构做修改的方式比较原始,比如说对某张库表新增了一个字段,都是直接在库表中执行alter table xxx add .. 的方式 ...
- tp5 数据库迁移及数据填充
1:首先通过 composer 安装 原命令加空格 1.* 2:创建 3:填入数据 4:运行,刷新数据库 数据填充: 1:在命令行输入以下命令 composer require fzaninot ...
- laravel中的数据迁移和数据填充
laravel中的数据迁移和数据填充 标签(空格分隔): php 生成迁移文件两种方式: 1 新建一个表的迁移文件 php artisan make:migration create_students ...
- laravel模型建立和数据迁移和数据填充(数据填充没有成功)未完
开始创建我们的第一个 Article 模型及其对应迁移文件了,我们在项目根目录运行如下 Artisan 命令一步到位: php artisan make:model Article -m -m 是 - ...
- Laravel 5.2数据库--迁移migration
Laravel中的migrations文件存放的是数据库表文件等结构,可以说是一个跟git差不多的,可以说像是数据库的版本控制器,所以可以叫做迁移.因为它可以很快速的很容易地构建应用的数据库表结构. ...
- laravel中的数据库迁移
1.创建数据库迁移文件:生成数据库迁移文件,前面跟着时间戳: php artisan make:migration create_posts_table 创建数据库迁移文件:可以重命名数据表名: -- ...
- Laravel 6.X 数据库迁移 创建表 与 修改表
数据库迁移创建表 本篇文章中使用的是mysql数据库,其他数据库需要修改env文件和app配置,请其他地方搜索一下就会找到. 创建示例 1.创建users表: 命令行键入 php artisan ma ...
- laravel框架总结(十四) -- 数据迁移和数据填充
一.数据迁移 1.创建一个迁移 1>使用artisan命令make:migration来创建一个新的迁移: php artisan make:migration create_sutdents_ ...
- Laravel 5.4 数据库迁移一次之后就不起作用!
https://segmentfault.com/q/1010000010806351 我在命令行中生成了一个新的迁移脚本: 当我执行命令:php artisan migrate 时 显示迁移成功,并 ...
随机推荐
- Bootstrap 折叠(collapse) 初见
以下代码来自bootstrap中文网 <!DOCTYPE html> <html lang="zh-CN"> <head> <meta c ...
- Python 开篇及第一个Python程序
本节内容 python 简单介绍 python 2.x 或者python 3.x python 安装 第一个python程序 一.python简单介绍 python的创始人为吉多.范罗苏姆(Guido ...
- 透彻掌握Promise的使用,读这篇就够了
透彻掌握Promise的使用,读这篇就够了 Promise的重要性我认为我没有必要多讲,概括起来说就是必须得掌握,而且还要掌握透彻.这篇文章的开头,主要跟大家分析一下,为什么会有Promise出现. ...
- [洛谷P3250][HNOI2016]网络
题目大意:给定一棵树.有三种操作: $0\;u\;v\;t:$在$u$到$v$的链上进行重要度为$t$的数据传输. $1\;x:$结束第$x$个数据传输. $2\;x:$询问不经过点$x$的数据传输中 ...
- sass的mixin,extend,placeholder,function
1. mixin 就是定义了一个函数,可以传参,并且设定默认值,css选择器可以通过@include来引用,mixin混入的代码,就是原样复制,不会合并,会造成冗余 例如: @mixin br6($b ...
- [学习笔记]NTT——快速数论变换
先要学会FFT[学习笔记]FFT——快速傅里叶变换 一.简介 FFT会爆精度.而且浮点数相乘常数比取模还大. 然后NTT横空出世了 虽然单位根是个好东西.但是,我们还有更好的东西 我们先选择一个模数, ...
- Codeforces Round #402 (Div. 2) A B C sort D二分 (水)
A. Pupils Redistribution time limit per test 1 second memory limit per test 256 megabytes input stan ...
- HDU2444 :The Accomodation of Students(二分图染色+二分图匹配)
The Accomodation of Students Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K ( ...
- ACM1811拓扑排序和并查集
/* ACM1811 可以利用拓扑排序和并查集解决,主要方式是利用并查集在输入数据的时候将所有相等的点合并 然后将处理完的数据统一按照一个符号方向连接成有向线段,利用的是邻接矩阵:接下来把每条边都进行 ...
- 手脱ASProtect v1.23 RC1(有Stolen Code)
1.载入PEID ASProtect v1.23 RC1 常见ASprotect版本壳: ASProtect 1.23 RC4 按shift+f9键26次后来到典型异常 ASProtect 1.31 ...