laravel快速入门:从数据库操作到视图渲染

本文详细介绍了如何使用Laravel框架中的DB类进行数据库操作,包括数据表的创建、数据库配置、在控制器中引入DB门面以及增删改查的各种方法。示例代码涵盖insert、update、get、delete等操作,并演示了排序、分页等高级功能。通过实例展示了原生SQL语句的执行方法,帮助读者深入理解Laravel数据库操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

Laravel,作为PHP领域的一颗璀璨明星,以其优雅的语法、强大的功能集和丰富的生态系统,赢得了全球开发者的青睐。本指南将引领您深入Laravel框架的核心,从数据库操作到视图渲染,全面解析LaravelWeb开发中的关键技术和最佳实践。首先,我们将从数据库操作入手,学习如何在Laravel中创建数据表、配置数据库连接,并通过DB类实现增删改查等基本操作。随后,我们将转向视图渲染,了解视图文件的存放位置、命名规范、变量传递以及模板继承等高级特性。通过本指南的学习,您将能够掌握Laravel框架的核心技能,为构建高效、安全的Web应用打下坚实的基础。

1、DB类操作数据库(重点)

按照MVC的架构,对数据的操作应该放在Model中完成,但如果不使用Model,我们也可以用laravel框架提供的DB类操作数据库,而且,对于某些极其复杂的sql,用Model已经很难完成,需要开发者自己手写sql语句,使用DB类去执行原生sql。laravel中DB类的基本用法DB::table['tableName']获取操作tableName表的实例(对象)。

1.1、数据表的创建与配置

建数据的方式:

  1. sql语句
  2. 图形界面 phpMyAdmin Navicat

建立数据库:
在这里插入图片描述
创建表:

create table member(
	id int primary key auto_increment,
	name varchar(32) not null,
	age tinyint unsigned not null,
	email varchar(32) not null
) engine myisam charset utf8;

在这里插入图片描述


1.2、数据库在laravel框架中的配置

.env文件里面

也可以在config目录下面的database.php文件里面配置。使用env函数,表示先从env文件里面获取,如果获取成功则使用,如果获取失败,则使用env函数的第二个参数。

1.3、在Test控制器中引入DB门面

在这里插入图片描述

在这里插入图片描述

1.3.1、定义增删改查需要的路由:

增加: /add
删除:/del
修改:/mod
查询:/select

在这里插入图片描述
1、增加信息(insert)
对数据库中的某个表增加数据主要有两个函数可以实现,分别是insert()insertGetId()

insert(数组) 可以同时添加一条或多条,返回值是布尔类型。
insertGetId(一维数组),只能添加一条数据,返回自增的id。

语法:DB::table('表名')->insert(); 连贯操作/链式操作
例:
在这里插入图片描述
效果:
在这里插入图片描述
在这里插入图片描述


2、修改数据(update)
数据修改可以使用update()、increment()和decrement()方法来实现。

update方法表示可以修改整个记录中的全部字段
increment和decrement表示修改数字字段的数值(递增或者递减),典型的应用:记录登录次数、积分的增加;

where() -> update([])
注意:where() -> where() -> where()… 这个语法是并且(and)关系语法。
where() -> orWhere() -> orWhere()… 这个语法是或者(or)关系语法。
orWhere方法的参数与where一致。
Where参数顺序:
where(字段名, 运算符, 字段值)。例如id=1,则可以写出:where(‘id’, ‘=’, 1),简写成Where(‘id’, ‘1’);【只有=号才可以简写】

例:把id=1的名称,改名为’lisi’ (返回值表示受影响的行数):
在这里插入图片描述
效果:
在这里插入图片描述
在这里插入图片描述


例:把id=1的用户年龄字段值加10

DB::table(‘member’) -> where(‘id’, ‘=’, 1) -> increment(‘age’); 每次+1
DB::table(‘member’) -> where(‘id’, ‘=’, 1) -> increment(‘age’, 5); 每次+5
DB::table(‘member’) -> where(‘id’, ‘=’, 1) -> decrement(‘age’); 每次-1
DB::table(‘member’) -> where(‘id’, ‘=’, 1) -> decrement(‘age’, 5); 每次-5

3、查询数据(get)
(1)取出基本数据
例:获取member表中所有的数据
DB::table('member') -> get(); // 相当于select * from member ;
返回值是一个集合对象,
在这里插入图片描述
效果:
在这里插入图片描述


例:取出id小于3的数据
在这里插入图片描述
效果:
在这里插入图片描述


例:查询id > 2 且年龄 <25数据
原生sql语句:select * from member where id > 2 and age <25
laravel语句:
在这里插入图片描述
效果:
在这里插入图片描述


(2)取出单行数据
DB::table('member') -> where('id', '1') -> first() 返回值是一个对象。
first方法等价于limit 1

注意:first和get的区别,first返回值是一个对象,而get即便其查询出只有1条记录,其也是一个collection结果集
总结场景:
使用first的场景:
使用first的场景:登录验证、详情页面、修改功能等
使用get的场景:列表页面、设计接口等

例:
在这里插入图片描述
效果:
在这里插入图片描述


(3)获取某个具体的值(一个字段)
DB::table('member') -> where('id', '1') -> value('name');
例:查询出id为1的用户的名字(只想要名字)
在这里插入图片描述
效果:
在这里插入图片描述


(4)获取某些字段数据(多个字段)

$users = DB::table('member') -> select('name', 'email') -> get();
$users = DB::table('member') -> select('name as user_name') -> get();
$users = DB::table('member') ->  select(DB::raw('name, age')) -> get(); // 不解析字段,原样使用。

例:获取id>2的记录中的姓名和邮箱字段。 原生sql: select name, email from member where id > 2;
在这里插入图片描述
效果:
在这里插入图片描述


(5)排序操作
DB::table('member') -> orderBy('age', 'desc') -> get();
语法: orderBy(排序字段, 排序规则)。desc降序,asc升序
例:查询列表,要求按照age字段降序排列。

在这里插入图片描述
效果:
在这里插入图片描述


(6)分页操作
DB::table('member') -> limit(3) -> offset(2) -> get();
limit:表示限制输出的条数(分页中每页显示记录数)
offset:从什么地方开始
例:
在这里插入图片描述
效果:
在这里插入图片描述
(7)删除数据(delete)
在删除中,有两种方式:物理删除(本质就是删除)、逻辑删除(本质是修改)
数据删除可以通过delete函数和truncate函数实现。

delete表示删除记录;
truncate表示清空整个数据表;

DB::table('member') -> where('id', '1') -> delete();

在这里插入图片描述
效果:
在这里插入图片描述


(8)执行任意是SQl语句

1、执行原生查询语句
DB::select('select 语句')

2、执行原生的插入语句
DB::insert('insert 语句');

3、执行原生修改语句
DB::update('update 语句')

4、执行原生删除语句
DB::delete('delete 语句');

5、执行一个通用语句(没有返回值的语句,例如create table等)
DB::statement(‘语句’)


2、视图操作

2.1 视图写在哪里?

在这里插入图片描述

注意:
1、视图可以分目录管理
2、视图的后缀在laravel中一般都是blade.php
3、视图的创建无法通过artisan来实现

2.2 视图文件的命名与渲染

1、文件名习惯小写
2、文件名的后缀是blade.php(因为laravel里面有一套模版引擎就是使用blade,可以直接使用标签语法{{KaTeX parse error: Expected 'EOF', got '}' at position 6: title}̲},也可以使用原生的php语法…title}}语法显示数据,只能使用原生语法 <?php echo $title ?>显示数据。两个视图文件同时存在,则blade.php后缀的优先显示。

案例:编写一路由地址,调用Test控制器的test方法,展示视图test2文件(创建2个,验证优先级)
创建对应路由:
在这里插入图片描述
方法:
在这里插入图片描述
创建视图:
在这里插入图片描述
在这里插入图片描述

效果:
在这里插入图片描述


2.3 变量分配与展示

语法:

1、view(模版文件名称, 数组) 数组就是需要分配的变量集合,数组是一个键值数组,其键与变量名尽量一致。
2、view(模版文件名称) -> with(数组)
3、view(模版文件名称) -> withd(名称, 值) -> with(名称, 值)…

使用view()方式渲染一个视图后,在blade.php的视图文件中,模版中输出变量使用{{$变量名}}

例:需要将控制器中的方法的时间(年月日分秒)数据传递到视图中去。
在这里插入图片描述
在这里插入图片描述
效果:
在这里插入图片描述
格式化时间戳:
在这里插入图片描述
效果:
在这里插入图片描述


2.4 扩展:compact函数的使用(传参)

compact函数,是php内置函数跟laravel框架没有关系。作用主要是用于打包数组的。
语法:compact(‘变量名1’, ‘变量名2’,…);
在这里插入图片描述
效果:
在这里插入图片描述
在这里插入图片描述


2.5 循环与分支语法标签

在视图里面遍历数据
在laravel中模版中循环输出数据,则需要遵循语法:

php的写法:
foreach($variable as $key => $value){}

laravel中视图的写法:
@foreach($variable as $key => $value)
@endforeach

例:
在这里插入图片描述
效果:
在这里插入图片描述


2.6 视图中的判断标签

php中的if语法:

if () {}
elseif () {}
elseif () {}
else {}

laravel中视图if语句:

@if()
@elesif()
@elseif()
@else()
@endif()

例:要求在php代码中动态输出今天的星期数字。将数字传递给视图,显示出今天是星期几(将数字转化成汉字)
1、先在控制器方法中输出当前的星期数字
在这里插入图片描述
2、视图
在这里插入图片描述
效果:
在这里插入图片描述


2.7 模版继承/包含(理解)

继承不仅仅在php类中存在,在视图中同样存在。一般是用于做有公共部分的页面。
可以将头和尾单独的放到一个页面中去(父页面),可变的区域称之为叫子页面,如果子页面需要使用到父页面的东西,则需要使用继承。

继承语法:
子模版中按以下语法书写:
@extends(‘需要继承的模版文件名’) 其名称要是完整路径,类似view视图路径通过section标签绑定区块/部件到父级页面,区块名称就是父级页面yield标签的参数名。@section(区块名称) 代码 @endsection

问题:php父类中的方法能不能在子类中重写?(可以)
例:编写父级页面(父类),再编写一个子页面(子类)
父级页面(父类):
在这里插入图片描述


子页面(子类):
在这里插入图片描述
模版的继承与包含:
在这里插入图片描述
在这里插入图片描述
效果:
在这里插入图片描述


模版包含:
语法:

@include(模版文件名) 文件名不含后缀,语法类似view方法参数

在学习的php的路上,如果你觉得本文对你有所帮助的话,那就请关注点赞评论三连吧,谢谢,你的肯定是我写博的另一个支持。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你华还是你华

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值