laravel操作数据库

要开启相应数据库的pdo扩展。

laravel操作数据库

 

配置数据库连接

在larave中连接数据库的配置地方有两个

1、.env文件

2、修改config/database.php文件

如下:

laravel操作数据库

 

 

 

注意此时要开启MySQL,也就是进程中有MySQL服务

laravel操作数据库

 

 

创建数据库

 CREATE DATABASE `laraveltest` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

 

 注意:laravel5.4之后对我们的数据库的编码就进行了默认改变,默认使用 utf8mb4

 看databases.php

laravel操作数据库

 

 

 

设置路由,检查配置

laravel操作数据库

 

 

 laravel操作数据库

 

 

 1、查询

table(表名),这里的表名,如查有前缀不用写。

# 查询多条 get all
# all不可以接where条件

// 查询所有无条件
$data = DB::table(‘user‘)->get(); // 默认 [‘*’]
// 查询所有,并指定字段 推荐使第一种方式
$data = DB::table(‘user‘)->get([‘name‘,‘age‘]);
// 获取ID大于5的数据
$ret = DB::table(‘member‘)->where(‘id‘,‘>=‘,5)->get();

// when 来进行条件的搜索
$kw = $request->get(‘kw‘,‘user‘);
// when                        字段  如果为真则执行匿名函数中的操作
$ret = DB::table(‘users‘)->when($kw,function (Builder $query) use ($kw){
$query->where(‘username‘,‘like‘,"%{$kw}%");
})->get();

# 查询单条记录
$ret = DB::table(‘member‘)->where(‘id‘, 5)->first();

# 获取某个具体的值
$ret = DB::table(‘member‘)->where(‘id‘,5)->value(‘name‘);

# 获取一列数据
$ret = DB::table(‘member‘)->pluck(‘name‘);
# 以ID为下标 name为值
$ret = DB::table(‘member‘)->pluck(‘name‘, ‘id‘);

# 排序操作
$ret = DB::table(‘member‘)->orderBy(‘id‘,‘desc‘)->get();

# 查询总记录数
echo DB::table(‘member‘)->count();

# 分页获取数据
$ret = DB::table(‘member‘)->orderBy(‘id‘,‘desc‘)->offset(0)->limit(2)->get();
limit:表示限制输出的条数

这里遇到一个问题,如下如果写127.0.0.1会解析成本地的域名,回报没有权限的错误,所以我们要写成localhost

laravel操作数据库

 

 

 laravel操作数据库

 

 

 在操作表之前一定要引入DB类,如下图:

laravel操作数据库

 

 

table(表名),这里的表名,如查有前缀不用写。

# 查询多条 get all
# all不可以接where条件

// 查询所有无条件
$data = DB::table(‘user‘)->get(); // 默认 [‘*’]
// 查询所有,并指定字段 推荐使第一种方式
$data = DB::table(‘user‘)->get([‘name‘,‘age‘]);
// 获取ID大于5的数据
$ret = DB::table(‘member‘)->where(‘id‘,‘>=‘,5)->get();

// when 来进行条件的搜索
$kw = $request->get(‘kw‘,‘user‘);
// when                        字段  如果为真则执行匿名函数中的操作
$ret = DB::table(‘users‘)->when($kw,function (Builder $query) use ($kw){
$query->where(‘username‘,‘like‘,"%{$kw}%");
})->get();

# 查询单条记录
$ret = DB::table(‘member‘)->where(‘id‘, 5)->first();

# 获取某个具体的值
$ret = DB::table(‘member‘)->where(‘id‘,5)->value(‘name‘);

# 获取一列数据
$ret = DB::table(‘member‘)->pluck(‘name‘);
# 以ID为下标 name为值
$ret = DB::table(‘member‘)->pluck(‘name‘, ‘id‘);

# 排序操作
$ret = DB::table(‘member‘)->orderBy(‘id‘,‘desc‘)->get();

# 查询总记录数
echo DB::table(‘member‘)->count();

# 分页获取数据
$ret = DB::table(‘member‘)->orderBy(‘id‘,‘desc‘)->offset(0)->limit(2)->get();
limit:表示限制输出的条数
offset:从什么地方开始,起始从0开始
$ret = DB::table(‘users‘)->whereIn(‘id‘,[2,3,5])->get();
$ret = DB::table(‘users‘)->whereBetween(‘id‘,[3,5])->get();

 添加数据

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

// 添加数据
$ret = DB::table(‘member‘)->insert([
‘name‘ => ‘张三丰‘,
‘age‘ => 50,
‘email‘ => ‘ee@ee.com‘
]);
// 添加数据并得到插入时的ID值
$id = DB::table(‘member‘)->insertGetId([
‘name‘ => ‘小华‘,
‘age‘ => 60,
‘email‘ => ‘ff@ff.com‘
]);

// 添加多条记录
$ret = DB::table(‘member‘)->insert([
[‘name‘=>‘AAAA‘,‘age‘=>20,‘email‘=>‘111@111.com‘],
[‘name‘=>‘BBBB‘,‘age‘=>30,‘email‘=>‘222@222.com‘],
]);

修改数据

$ret = DB::table(‘member‘)->where(‘id‘, 2)->update([
‘name‘ => ‘修改一下‘,
‘age‘  => 50
]);

同时插入一些char和varchar区别的整理

数据库中baichar和varchar的区别为:长度不du同、效率不同、zhi存储不同。dao

一、长度不同

1、char类型:char类型的长度是固定的。

2、varchar类型:varchar类型的长度是可变的。

二、效率不同

1、char类型:char类型每次修改的数据长度相同,效率更高。

2、varchar类型:varchar类型每次修改的数据长度不同,效率更低。
三、存储不同

1、char类型:char类型存储的时候是初始预计字符串再加上一个记录字符串长度的字节,占用空间较大。

2、varchar类型:varchar类型存储的时候是实际字符串再加上一个记录字符串长度的字节,占用空间较小。

删除数据(delete)

$ret = DB::table(‘member‘)->where(‘id‘,2)->delete();

上述的结果有些时对象,可以使用toArray(),把对象转为数组。

当然,上述只有一点内容,更多的使用场景可以看手册,那么手册位置如下图

laravel操作数据库

 

 laravel操作数据库

 

 laravel操作数据库

 

laravel操作数据库

上一篇:MySql 优化全集


下一篇:解Bug之路-记一次中间件导致的慢SQL排查过程