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

  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

我这里使用的是 第一种

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

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

laravel5Eloquent模型与数据表的创建的更多相关文章

  1. 数据库、数据表的创建SP2

      本人前一个版本的数据库.数据表的创建由于不是很详细,于是通过细心的修订,已经修复了很多Bug,希望这篇文章能够给大家一些帮助 --代表注释,相当于C#里的// --切换到master数据库,目的是 ...

  2. 19数据表的创建-普通表&临时表-天轰穿大话数据库视频教程

    关键字:数据表 数据库性能 临时表 天轰穿 sqlserver 数据库大纲:数据表的特点,数据表的类型及用法,SQL创建数据表,创建临时表,全局临时表 优酷超清地址 腾讯超清地址 原文地址:http: ...

  3. SQL笔记-第二章,数据表的创建和管理

    数据类型 分5类:整数.数值.字符相关.日期时间以及二进制 1.整数 数据库系统 类型 说明 MYSQL tinyint [unsigned] 一个很小的整数.有符号的范围是-128 到127,无符号 ...

  4. SQL语句(一)SQL和数据库数据表的创建

    SQL的组成 (1) 数据定义语言DDL(Data Definition Language) 用于数据库和数据表的创建.修改和删除等操作 CREATE (create) 创建数据库.数据表 ALTER ...

  5. MySQL查看数据表的创建时间和最后修改时间

    如何MySQL中一个数据表的创建时间和最后修改时间呢? 可以通过查询information_schema.TABLES 表得到信息. 例如 mysql> SELECT * FROM `infor ...

  6. MySQL数据表的创建、查看、插入

    数据表:数据表(或称表)是数据库最重要的组成部分之一,是其他对象的基础.     1.首先我们打开一个数据库(这里我打开的是新创建的一个aaa数据库). 打开数据库:use + 数据库名;     2 ...

  7. mysql千万级数据表,创建表及字段扩展的几条建议

    一:概述 当我们设计一个系统时,需要考虑到系统的运行一段时间后,表里数据量大约有多少,如果在初期,就能估算到某几张表数据量非常庞大时(比如聊天消息表),就要把表创建好,这篇文章从创建表,增加数据,以及 ...

  8. mysql-3 数据表的创建、增删改查

    1.创建数据表 通用语法:CREATE TABLE table_name (column_name column_type); CREATE TABLE IF NOT EXISTS `csj_tbl` ...

  9. sql server 数据库系统整理——数据表的创建和管理

    注意: 1.  固定长度字符类型比非固定长度字符类型占用空间要大,可是因为进行字段值设置的时候固定长度字符类型无需进行长度处理就能够进行,因此它的处理速度更快. 所以          对于长度相对固 ...

随机推荐

  1. 基于asp.net core 从零搭建自己的业务框架(二)

    前言 对于项目的迭代,如何降低复杂性的要求高于性能以及技术细节的 一个易用的项目,才能迭代到比拼性能,最后拼刺刀的阶段 传统单体项目,都是传统三层,直接请求响应的模式,这类称为Rpc模式,易用性上非常 ...

  2. ios签名app稳定不掉签技术详细教程详解

    iOS签名是专门针对ios的APP内测的数字签名,是苹果面向开发者提出的一箱机制. 因为现在苹果APP下载渠道只有App Store,还可以加上一个内测用的testflight,也就是说,除了这两个官 ...

  3. 为什么需要将网站封装为app?

      网站封装为app是一种宝贵的资源,为客户提供稳定的平台,一个网站也是一个有效的工具,用于企业与其客户之间的通信.企业网站用户可以通过他们的笔记本电脑,台式机,平板电脑,智能手机以及带有浏览器设备的 ...

  4. RIPS源码阅读记录(二)

    Author: tr1ple 这部分主要分析scanner.php的逻辑,在token流重构完成后,此时ini_get是否包含auto_prepend_file或者auto_append_file 取 ...

  5. ROS 八叉树地图构建 - 安装 octomap 和 octomap_server 建图包!

    项目要用到八叉树库 Octomap 来构建地图,这里记录下安装.可视化,并启用带颜色的 Octomap 的过程. 一.Apt 安装 Octomap 库 如果你不需要修改源码,可以直接安装编译好的 oc ...

  6. c++萌新到大牛,要看哪些书?

    基础语法 <c++primer> 语法进阶 <c++primer plus> 专为c++编著.支持c++14国际标准. 数据结构和算法 <大话数据结构> 编程规范 ...

  7. IDEA 非常重要的一些设置项 → 一连串的问题差点让我重新用回 Eclipse !

    开心一刻 建筑行业内,我看过的最凶残笑话(IT行业内好一致!) 上联:一天晚上两个甲方三更半夜四处催图只好周五加班到周六早上七点画好八点传完九点上床睡觉十分痛苦 下联:十点才过九分甲方八个短信七个电话 ...

  8. 静态代理和动态代理(jdk/cglib)详解

    1.静态代理模式 代理模式上,基本上有Subject角色,RealSubject角色,Proxy角色.其中:Subject角色负责定义RealSubject和Proxy角色应该实现的接口:RealSu ...

  9. Mac开发工具

    便捷管理你的Mac App Homebrew:https://brew.sh/index_zh-cn 强大的文本编辑器 Sublime Text:http://www.sublimetext.com ...

  10. js中几种常用的数组处理方法的总结

    一.filter()用法 功能:用于筛选数组中满足条件的元素,返回一个筛选后的新数组. <script> $(function(){ var arr = [1,-2,3,4,-5]; va ...