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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 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领域原创作者

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
存储 SQL 分布式数据库
OceanBase 入门:分布式数据库的基础概念
【8月更文第31天】在当今的大数据时代,随着业务规模的不断扩大,传统的单机数据库已经难以满足高并发、大数据量的应用需求。分布式数据库应运而生,成为解决这一问题的有效方案之一。本文将介绍一款由阿里巴巴集团自主研发的分布式数据库——OceanBase,并通过一些基础概念和实际代码示例来帮助读者理解其工作原理。
212 0
|
3月前
|
SQL NoSQL Oracle
IT入门知识第四部分《数据库》(4/10)(二)
IT入门知识第四部分《数据库》(4/10)(二)
38 0
|
3月前
|
存储 SQL 关系型数据库
IT入门知识第四部分《数据库》(4/10)(一)
IT入门知识第四部分《数据库》(4/10)(一)
46 0
|
14天前
|
SQL 存储 数据管理
SQL数据库的使用指南:从入门到精通
随着信息技术的飞速发展,数据库已成为各类企业和组织不可或缺的一部分。作为最流行的数据库管理系统之一,SQL数据库广泛应用于各种场景,如数据存储、数据管理、数据分析等。本文将详细介绍SQL数据库的使用方法,帮助初学者快速入门,并帮助有经验的开发者深化理解。一、SQL数据库基础首先,我们需要理解SQL数
67 2
|
14天前
|
SQL 存储 数据库
初识SQL数据库教程——从入门到精通
随着信息技术的飞速发展,数据库技术已成为计算机领域的重要组成部分。作为最流行的数据库管理系统之一,SQL数据库广泛应用于各类企业和组织的数据管理中。本文将带领读者从入门到精通,学习SQL数据库的相关知识。一、SQL数据库概述SQL(StructuredQueryLanguage)是一种用于管理关系数
31 2
|
1月前
|
前端开发 IDE 数据库连接
ThinkPHP6 模型层的模型属性,表映射关系,以及如何在控制层中使用模型层和模型层中的简单CRUD
本文详细介绍了ThinkPHP6中模型层的使用,包括模型属性设置、表映射关系、以及如何在控制层中使用模型层进行CRUD操作。
ThinkPHP6 模型层的模型属性,表映射关系,以及如何在控制层中使用模型层和模型层中的简单CRUD
|
2月前
|
SQL 存储 NoSQL
Redis6入门到实战------ 一、NoSQL数据库简介
这篇文章是关于NoSQL数据库的简介,讨论了技术发展、NoSQL数据库的概念、适用场景、不适用场景,以及常见的非关系型数据库。文章还提到了Web1.0到Web2.0时代的技术演进,以及解决CPU、内存和IO压力的方法,并对比了行式存储和列式存储数据库的特点。
Redis6入门到实战------ 一、NoSQL数据库简介
|
2月前
|
SQL 数据库
Spring5入门到实战------13、使用JdbcTemplate操作数据库(批量增删改)。具体代码+讲解 【下篇】
这篇文章是Spring5框架的实战教程,深入讲解了如何使用JdbcTemplate进行数据库的批量操作,包括批量添加、批量修改和批量删除的具体代码实现和测试过程,并通过完整的项目案例展示了如何在实际开发中应用这些技术。
Spring5入门到实战------13、使用JdbcTemplate操作数据库(批量增删改)。具体代码+讲解 【下篇】
|
1月前
|
SQL Oracle 关系型数据库
Oracle数据库管理:从入门到精通
表(Table):表是Oracle数据库中存储数据的基本结构单元,由行(Row)和列(Column)组成。每行代表一个记录,每列代表一个字段。 SQL(Structured Query Language):SQL是Oracle数据库的核心语言,用于与数据库交互,执行查询、插入、更新和删除等操作。 数据库实例与数据库:在Oracle中,数据库实例是一组后台进程和内存结构,用于管理数据库并提供服务。而数据库则是数据的物理存储,包括数据文件、控制文件、联机日志和参数文件等。
60 0
|
1月前
|
SQL Java OLAP
Hologres 入门:实时分析数据库的新选择
【9月更文第1天】在大数据和实时计算领域,数据仓库和分析型数据库的需求日益增长。随着业务对数据实时性要求的提高,传统的批处理架构已经难以满足现代应用的需求。阿里云推出的 Hologres 就是为了解决这个问题而生的一款实时分析数据库。本文将带你深入了解 Hologres 的基本概念、优势,并通过示例代码展示如何使用 Hologres 进行数据处理。
231 2