第四章 模型和数据库操作

本章简单介绍一下,模型和数据库的使用。我们可以单独使用数据库Db类来获取数据。也可以使用框架提供的模型来获取数据库数据。

在ThinkPHP中,使用Db类,可以使用下面的方式:

1、Db::table(‘think_user’),通过use think\facade\Db来导入门面类。
2、app(‘db’)->table(),通过app()来获取容器,app()是一个助手函数。

以查询单个数据为例,查询单个数据使用find方法:

// table方法必须指定完整的数据表名
Db::table('think_user')->where('id', 1)->find(); //查询的结果如果为空返回NUll,否则返回数组

//还可以使用容器的方式,访问Db数据库连接对象的实例
app('db')->table('think_user')->where('id', 1)->find();

其它的使用数据库方法使用类似,具体可以参考官方文档。

说明:
使用Db类操作数据库或者使用模型操作数据库,都是需要先配置数据库信息,在config目录下面的database.php文件里面可以查看具体配置。这个文件里面的配置,读取的是.env文件内的配置。

分页查询

1、使用limit()进行分页查询。

//例如,查询第10行记录后的25条
Db::table('article')->limit(10,25)->select();

2、使用page()进行分页查询。

//例如,查询第10行记录后的25条
Db::table('article')->limit(10,25)->select();

插入数据

使用insert()插入一条数据,如果表设置了主键,并且自动递增,这样就会在最后新增一条数据到表里。

//insert 方法添加数据成功返回添加成功的条数,返回 1。否则,抛出异常。

$data = ['name' => 'test', 'gender' => '0'];
Db::name('user')->insert($data);

删除数据

使用delete()删除一条或多条数据。

//delete方法返回影响数据的条数,没有删除返回 0

Db::table('think_user')->where('id',1)->delete();

//根据主键删除
Db::table('think_user')->delete(1);
Db::table('think_user')->delete([1,2,3]);

更新数据

使用update()修改数据

//update方法返回影响数据的条数,没修改任何数据返回 0

Db::name('user')
    ->where('id', 1)
    ->update(['name' => 'thinkphp']);

使用模型来操作数据

实际开发中,使用模型来操作数据较多。模型较Db操作数据有着更为方便的操作。

模型使用
1、首先定义模型类Test,继承think\Model。
2、使用模型提供的方法来进行增删改查。

以查询为例,在要查询的控制器内使用:

Test::find(1); //1为主键值

模型使用find方法查询,如果数据不存在返回Null,否则返回当前模型的对象实例。如果需要返回数据,而不是对象实例,使用toArray()转换返回数组。

在使用模型时,最好在控制器中只调用模型,具体的操作都放在模型的自定义方法中,这样简洁,利于重复使用。

//以上面Test模型为例,直接在控制器中查询数据
$model = new Test();
$result = $model->where("id", "22")->order("id", "desc")->select();

if(empty($result)) {
	return [];
}else {
	return $result->toArray();
}

//上面操作数据逻辑,是查询数据并判断输出。应该放到模型中,这样可以简洁代码,并且可以重复使用代码。

查询数据时调试方法

  1. 打开调试模式,页面中查看SQL执行。如图:
    在这里插入图片描述
  2. 使用链式操作的fetchSql,可以返回SQL执行。
  3. 使用getLastsql方法来输出上次执行的sql语句,这样也可以调试。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值