3分钟短文:素未谋面,Laravel数据库模型初阶入门

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介: laravel模型入门,就从这篇开始

引言

没有模型的框架是没有灵活的!每个框架都会针对数据库进行深度设计,
以便快捷地进行SQL的增删改查,把重复的劳动抽象出来,提高应用开发效率。

图片

本期就来讲讲laravel的模型初阶用法。

代码时间

模型是在代码中抽象一层,把数据库操作提取出来。laravel支持常用的数据库产品,
我们以MySQL为例。首先在配置文件内,配置参数对数据库连接。

在配置文件 config/database.php 内,默认的配置如下:

pic

包括数据库连接名,数据库地址,端口,用户名和密码,数据库名等等信息,就完成了初始化配置。
一般,如果不手动指定,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版本而有所不同,但是基础内容未变:

pic

有了模型对应数据库表,现在我们还缺一个数据库表,在迁移文件内进行配置。
由于我们在上述命令行脚手架中使用了 --migration 选项,系统就创建了迁移文件,
编辑 2020_09_27_202416_create_events_table.php 内容。自带的内容如下:

pic

其中 up 方法 Schema 用于创建数据库字段,索引等等,其中 down 方法,用于回滚迁移。
在生命中,默认给了两个字段:

  • 自增的id字段
  • timestamps() 方法会创建 created_atupdated_at 两个 datetime 字段

我们为数据库表再增加一些字段:

pic

其中 string 方法创建的是 VARCHAR 类型的字段,text 方法创建 TEXT 类型的字段。
nullable 方法表名该字段默认允许为 NULL

完成表单的字段设计后,我们将设计的表应用到数据库。在命令行执行以下指令:

php artisan migrate

命令行输出大致如下:

Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table
Migrated: 2014_10_12_000000_create_users_table
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated: 2014_10_12_100000_create_password_resets_table
Migrating: 2020_09_27_202416_create_events_table
Migrated: 2020_09_27_202416_create_events_table

其中 users 表,password_resets 表,是系统自带的权限系统使用的。

为了验证是否迁移成功,我们在命令行使用mysql客户端连接目标数据库。
首先展示所有的表名:

pic

重点看一下我们设计的 events 表的结构,是否如 Schema 的期望:

pic

如果我们需要重新设计表结构,对上面的迁移进行回滚也很简单,执行以下命令:

php artisan migrate:rollback

输出内容如下:

Rolling back: 2020_09_27_202416_create_events_table
Rolled back: 2020_09_27_202416_create_events_table
Rolling back: 2014_10_12_100000_create_password_resets_table
Rolled back: 2014_10_12_100000_create_password_resets_table
Rolling back: 2014_10_12_000000_create_users_table
Rolled 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_table
Rolled back: 2020_09_27_202416_create_events_table

注意是按照批次回滚的,如果回滚到第二批次,第三批次,只用指定 --step=N 即可。

写在最后

本文讲解了laravel在连接数据库,创建数据库表迁移文件的内容。对于强大的Eloquent ORM 这只是一个开始。

Happy coding :-)

我是@程序员小助手,专注编程知识,圈子动态的IT领域原创作者

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
3月前
|
SQL 关系型数据库 数据库
Python SQLAlchemy模块:从入门到实战的数据库操作指南
免费提供Python+PyCharm编程环境,结合SQLAlchemy ORM框架详解数据库开发。涵盖连接配置、模型定义、CRUD操作、事务控制及Alembic迁移工具,以电商订单系统为例,深入讲解高并发场景下的性能优化与最佳实践,助你高效构建数据驱动应用。
425 7
|
4月前
|
JavaScript API PHP
WordPress/Laravel企业官网源码-自适应多端SEO-前后端分离源码含数据库与部署文档​
本文详解如何结合WordPress与Laravel构建现代化企业官网,涵盖响应式设计、SEO优化、前后端分离、数据库安全及自动化部署。通过实战案例展示性能提升成果,并展望AI、云原生与区块链的未来融合方向,助力企业实现数字化增长。
|
8月前
|
人工智能 数据挖掘 API
基于neo4j数据库和dify大模型框架的rag模型搭建——后续补充
基于neo4j数据库和dify大模型框架的rag模型搭建——后续补充
848 21
基于neo4j数据库和dify大模型框架的rag模型搭建——后续补充
|
Java 数据库连接 测试技术
SpringBoot入门 - 添加内存数据库H2
SpringBoot入门 - 添加内存数据库H2
801 3
SpringBoot入门 - 添加内存数据库H2
|
8月前
|
Java 数据库 Docker
基于neo4j数据库和dify大模型框架的rag模型搭建
基于neo4j数据库和dify大模型框架的rag模型搭建
2157 35
|
Java 数据库连接 测试技术
SpringBoot入门(4) - 添加内存数据库H2
SpringBoot入门(4) - 添加内存数据库H2
299 4
SpringBoot入门(4) - 添加内存数据库H2
|
Java 数据库连接 测试技术
SpringBoot入门(4) - 添加内存数据库H2
SpringBoot入门(4) - 添加内存数据库H2
182 2
SpringBoot入门(4) - 添加内存数据库H2
|
Java 数据库连接 测试技术
SpringBoot入门(4) - 添加内存数据库H2
SpringBoot入门(4) - 添加内存数据库H2
194 13
|
Java 数据库连接 测试技术
SpringBoot入门(4) - 添加内存数据库H2
SpringBoot入门(4) - 添加内存数据库H2
258 4

热门文章

最新文章