一、创建数据库的 migrations 文件
# 创建的文件名:create_user_table
# 数据库表名:user
php artisan make:migration create_users_table --create=users
php artisan make:migration create_role_user_table --create=role_user
二、编辑迁移结构
文件名:2014_10_12_000000_create_users_table.php
更多迁移结构的语法 请查看:
[Laravel5.3教程00] PHP Artisan 命令
Laravel 5.1 文档攻略 数据库: Migrations 数据表设计/版本管理神器
public function up(){
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('mobile',11)->unique()->comment('手机号');
$table->string('cashNum', 60)->default('')->comment('支付账号');
$table->string('pwd')->comment('密码');
$table->string('tpwd')->comment('支付密码');
$table->string('userlcon')->default('')->nullable()->comment('用户头像');
$table->string('framName')->default('')->comment('***');
$table->string('recommen')->default('')->comment('***');
$table->decimal('eggCount',12,2)->default(0.00)->comment('***');
$table->decimal('feedsCount',12,2)->default(0.00)->comment('***');
$table->rememberToken();
$table->timestamps();
});
}
文件名:2015_01_15_114412_create_role_user_table.php
public function up(){
Schema::create('role_user', function (Blueprint $table) {
$table->increments('id')->unsigned();
$table->integer('role_id')->unsigned()->index();// 设置int类型,禁用负值,加入基本索引
$table->foreign('role_id')->references('id')->on('roles')->onDelete('cascade');
$table->integer('user_id')->unsigned()->index();
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');// 外键约束
$table->timestamps();
});
}
三、执行迁移结构
php artisan migrate
四、这里遇到几个问题
- 创建迁移文件一定要按照 先后顺序创建,尤其是涉及索引相关的结构
我先创建的
role_user
表迁移文件,在创建的users
。 写入数据库的时候 系统先创建的role_user
表,直接报错,因为role_user
有users
表的外键,所以系统报错
[Illuminate\Database\QueryException]
SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint (SQL: alter table `role_user` add constraint `role_user_userid_fo
reign` foreign key (`userId`) references `users` (`id`) on delete cascade)
[PDOException]
SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint
解决方法:按照先后顺序创建
- 继续上面的问题
删除迁移文件 最好用
artisan
命令删除,我是直接删除的文件,然后遵守先后顺序创建users
表的时候,artisan
不让我创建了
[ErrorException]
include(/apps/aiyouTest/vendor/composer/../../database/migrations/2017_01_11_070800_create_users_table.php): failed to open stream: No such
file or directory
解决方法:composer dump-autoload
网友评论