引言
没有模型的框架是没有灵活的!每个框架都会针对数据库进行深度设计, 以便快捷地进行SQL的增删改查,把重复的劳动抽象出来,提高应用开发效率。
![67c5a94970827a2807a666767000993a.png](https://i-blog.csdnimg.cn/blog_migrate/e3b35c72cac35ac3086f3099ca629ca4.jpeg)
本期就来讲讲laravel的模型初阶用法。
代码时间
模型是在代码中抽象一层,把数据库操作提取出来。laravel支持常用的数据库产品, 我们以MySQL为例。首先在配置文件内,配置参数对数据库连接。
在配置文件 config/database.php 内,默认的配置如下:
![1f0a722d36e5a84f7b38300a0eefa6f1.png](https://i-blog.csdnimg.cn/blog_migrate/8fb53bb33cd822011d8602e63a310f68.jpeg)
包括数据库连接名,数据库地址,端口,用户名和密码,数据库名等等信息,就完成了初始化配置。 一般,如果不手动指定,laravel模型内的 $connection 就是取的配置文件内的这一行:
'default' => env('DB_CONNECTION', 'mysql'),
也即是mysql数据库。接着我们通过迁移功能,创建一个迁移文件。这样无需我们手动创建数据库表。 在命令行运行以下指令:
php artisan make:model Event --migration
命令行输出如下:
Model created successfully.Created Migration: 2020_09_27_202416_create_events_table
可以看到系统创建了一个模型文件在 app/Event.php。其中内容视不同的laravel版本而有所不同,但是基础内容未变:
![7a16ab7f0a56ba8e6966cea5d17e24da.png](https://i-blog.csdnimg.cn/blog_migrate/bdce838295f881fa7760dddb30382f7b.jpeg)
有了模型对应数据库表,现在我们还缺一个数据库表,在迁移文件内进行配置。 由于我们在上述命令行脚手架中使用了 --migration 选项,系统就创建了迁移文件, 编辑 2020_09_27_202416_create_events_table.php 内容。自带的内容如下:
![910a2b726e5183d84846bd4d84a0c15c.png](https://i-blog.csdnimg.cn/blog_migrate/ff54f47154a687749a41dcd7847fd480.jpeg)
其中 up 方法 Schema 用于创建数据库字段,索引等等,其中 down 方法,用于回滚迁移。 在生命中,默认给了两个字段:
- 自增的id字段
- timestamps() 方法会创建 created_at 和 updated_at 两个 datetime 字段
我们为数据库表再增加一些字段:
![96f68d22a37a8d238810c389c09d5be1.png](https://i-blog.csdnimg.cn/blog_migrate/6a3f1982a681241e13d38b223a226f40.jpeg)
其中 string 方法创建的是 VARCHAR 类型的字段,text 方法创建 TEXT 类型的字段。 nullable 方法表名该字段默认允许为 NULL。
完成表单的字段设计后,我们将设计的表应用到数据库。在命令行执行以下指令:
php artisan migrate
命令行输出大致如下:
Migration table created successfully.Migrating: 2014_10_12_000000_create_users_tableMigrated: 2014_10_12_000000_create_users_tableMigrating: 2014_10_12_100000_create_password_resets_tableMigrated: 2014_10_12_100000_create_password_resets_tableMigrating: 2020_09_27_202416_create_events_tableMigrated: 2020_09_27_202416_create_events_table
其中 users 表,password_resets 表,是系统自带的权限系统使用的。
为了验证是否迁移成功,我们在命令行使用mysql客户端连接目标数据库。 首先展示所有的表名:
![815f12349f873ee56e428f2b9b6333bf.png](https://i-blog.csdnimg.cn/blog_migrate/b58d231ecd7eb37be48a262843d5fae4.jpeg)
重点看一下我们设计的 events 表的结构,是否如 Schema 的期望:
![7924cbd4faca7d5e9efcb2a4c34e9a41.png](https://i-blog.csdnimg.cn/blog_migrate/728f54661121696055f78a2bd7910a41.jpeg)
如果我们需要重新设计表结构,对上面的迁移进行回滚也很简单,执行以下命令:
php artisan migrate:rollback
输出内容如下:
Rolling back: 2020_09_27_202416_create_events_tableRolled back: 2020_09_27_202416_create_events_tableRolling back: 2014_10_12_100000_create_password_resets_tableRolled back: 2014_10_12_100000_create_password_resets_tableRolling back: 2014_10_12_000000_create_users_tableRolled back: 2014_10_12_000000_create_users_table
这可不妙,我们只想回滚 events 表,不想回滚 user password_resets 表。 那么我们需要手动指定,回滚的时候,仅回滚最新一批次的迁移。执行以下代码:
php artisan migrate:rollback --step=1
输出如下:
Rolling back: 2020_09_27_202416_create_events_tableRolled back: 2020_09_27_202416_create_events_table
注意是按照批次回滚的,如果回滚到第二批次,第三批次,只用指定 --step=N 即可。
写在最后
本文讲解了laravel在连接数据库,创建数据库表迁移文件的内容。对于强大的Eloquent ORM 这只是一个开始。
Happy coding :-)
我是@程序员小助手,专注编程知识,圈子动态的IT领域原创作者