下面是有关管理员模型与表的创建

  1. 生成模型时同时生成数据库迁移文件
  2. 在生成的迁移文件中添加字段
  3. 运行命令行生成数据表
  4. 命令进行混合运用
  5. 生成工厂文件,数据填充文件
  6. 工厂模型代码
  7. 数据填充文件代码
  8. 数据填充执行文件代码
  9. 执行命令行生成数据文件

Eloquent模型与生成数据库迁移文件

方法一:

php artisan make:model AdminModel/Admin   //生成模型

php artisan make:migration creat_procedures_table //创建数据迁移文件

方法二:可以生成模型时生成数据库迁移,使用 --migration 或 -m 选项

php artisan make:model AdminModel/Admin -m

注意:

方法一与方法二生成的数据迁移文件多少有些不同,测试的时候注意下。这里不过多赘述,推荐第二种,简单方便

我这里在测试的时候使用的是 第二种 方法,生成文件

app\AdminModel\Admin.php

database\migrations\2020_09_03_012211_create_admins_table.php

然后在生成的迁移文件中添加字段,我这里为了测试添加的多为比较常用的字段,如下所示:

public function up()
{
Schema::create('admins', function (Blueprint $table) {
$table->engine='InnoDB';
$table->increments('id');//自增主键
$table->string('username',50)->unique()->comment('用户名');//唯一值
$table->string('password')->comment('密码');//
$table->enum('status',[0,1])->default(1)->comment('状态');
$table->decimal('money',10,2);
$table->ipAddress('ip')->default('');
$table->rememberToken()->default(''); //remember_token
$table->timestamps(); //created_at updated_at //bigIncrements char string text mediumText longText integer tinyInteger smallInteger mediumInteger bigInteger unsignedInteger unsignedTinyInteger unsignedSmallInteger unsignedMediumInteger unsignedBigInteger float double decimal unsignedDecimal boolean enum json jsonb date dateTime dateTimeTz time timeTz timestamp timestampTz timestamps nullableTimestamps timestampsTz ipAddress rememberToken
// char string text integer tinyInteger decimal enum
});
}

这里需要注意如果使用 sting 或者 char 的时候注意限制字段值长度,不然可能会报错。

添加字段后,运行命令行生成数据表

php artisan migrate

CREATE TABLE `admins` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`username` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '用户名',
`password` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '密码',
`status` enum('0','1') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '1' COMMENT '状态',
`money` decimal(10,2) NOT NULL,
`ip` varchar(45) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
`remember_token` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT '',
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `admins_username_unique` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

注意:

1 运行前请先确定是否配置好数据库链接,如果没有请前往根目录下,查找文件 .env  进行设置,有一定基础的直接根据字段名修改,无基础的找基础知识吧,这里不过多赘述。

2 不需要指定具有迁移文件,我们这里需要清楚laravel创建数据表的模式(具体看图片)

  遍历 database\migrations\ 下的所有迁移文件,对比数据表中的 migrations 表(如果首次运行 migrate 会自动创建),找出没有进行迁移的文件进行迁移

为了更方便的了解,比如我们先删除 admins表 然后对应的也要删除 migrations 中对应的记录喔。 继续执行   php artisan migrate  或发现又重新新建了数据表 ,migrations 表中也新生成了一条记录

有人会发现 有存在 procedures 的记录,但是没有生成数据表。

这里就可以很直观的解释   php artisan make:migration creat_procedures_table

单独创建数据迁移文件,只生成文件与对应的方法,但是方法中没有设置对应的数据表名,也没有添加自增字段id.

除此之外,可以对命令进行混合运用

php artisan migrate
php artisan migrate:rollback
php artisan migrate:rollback --step=5
php artisan migrate:reset

接下来对数据表进行数据填充,具体可参考https://xueyuanjun.com/post/9694

这里主要对工厂模型填充数据进行测试

首先,执行命令行生成工厂文件,数据填充文件

生成工厂模型文件

php artisan make:factory AdminFactory

生成填充文件
php artisan make:seeder AdminsTableSeeder

生成文件所在路径

database\factories\AdminFactory.php

database\seeds\AdminsTableSeeder.php

工厂模型代码:AdminFactory.php

$factory->define(App\AdminModel\Admin::class, function (Faker $faker) {
return [
'username' => $faker->name,
'password' => '$2y$10$TKh8H1.PfQx37YgCzwiKb.KjNyWgaHb9cbcoQgdIVFlYg7B77UdFm', // secret
'ip'=>$faker->ipv4,
'status'=>1,
'money'=>0,
'remember_token' => str_random(10),
];
});

关于Faker 可参看 vendor\fzaninotto\faker\src\Faker\Generator.php

数据填充文件代码:AdminsTableSeeder.php

use Illuminate\Database\Seeder;

class AdminsTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
factory(\App\AdminModel\Admin::class, 5)->create();
}
}

数据填充执行文件代码:database\seeds\DatabaseSeeder.php

use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{ $this->call(AdminsTableSeeder::class);
}
}

注意:

工厂模型与数据填充文件中 对应的是admins的模型文件,而执行文件中执行的是填充文件的名称

最后执行命令行生成数据文件

  1. php artisan db:seed
  2. php artisan db:seed --class=UsersTableSeeder

我这里使用的是 第一种

第一种 多个填充器类,一次性运行

第二种 通过指定填充器类的方式将这条记录插入到数据库

最新文章

  1. Windows 上安装 Jekyll.
  2. PyCharm 教程(五)断点 调试
  3. Android开发学习总结——Android开发的一些相关概念
  4. 应用内存优化之OnLowMemory&OnTrimMemory
  5. Hdu 1042 N! (高精度数)
  6. eas bos 编辑界面 editUIt 属性值为空
  7. POJ 2773 Happy 2006#素数筛选+容斥原理+二分
  8. 嵌入式Linux引导过程之1.1——Xloader的xloader.lds
  9. Oracle字符到数值转换错误
  10. 内网MySQL YUM源记录
  11. LoadLibrary 失败的解决
  12. 【java】异常
  13. docker创建image
  14. Go内建函数copy
  15. Java 判断相等
  16. iframe父页面获取iframe子页面的元素 与 iframe子页面获取父页面元素
  17. Asp.Net Core实现文件上传
  18. 2017ACM暑期多校联合训练 - Team 7 1008 HDU 6127 Hard challenge (极角排序)
  19. LINUX中的DNS服务---高速缓存DNS
  20. Maven安装配置环境变量及eclipse的配置

热门文章

  1. 【SDOI2010】猪国杀 题解(模拟)
  2. Error: Cannot perform an interactive login from a non TTY device
  3. Spring Cloud 之服务注册中心高可用
  4. HTML 命名规范!
  5. Java自学-图形界面 容器
  6. 图数据库HugeGraph源码解读 (1) —— 入门介绍
  7. 定宽整形(C++11起)
  8. 2020-05-18:MYSQL为什么用B+树做索引结构?平时过程中怎么加的索引?
  9. Vue 自定义VueRouter-简版
  10. [luogu4140] 奇数国