博主信息
博文 42
粉丝 0
评论 1
访问量 33291
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
查询构造器实例-5月23日作业
日薪月e的博客
原创
818人浏览过

作业内容:

实例中主要包括了采用原生查询方式实现对数据库的增、删、改、查操作,其实包含了Table(),field(),order(),where(),limit(),insert(),insertAll(),update(),delete(),以及如何获取自增主键和数据打包方法data()等方法

实例代码分享如下:

实例

<?php
namespace app\index\controller;
use think\Db;

class Query
{
	//读操作返回的都是二组数组,没有满足条件的记录返回空数组
	//写操作返回的是受影响的记录数,如果没有满足条件的记录返回0
	public function find()
	{
		//1.查询返回单条记录:
		//获取到满足条件的第一条记录
		$res = Db::table('staff')
			// ->field('name,sex,salary') //只显示某几个字段
			// 显示的字段用数组方式传入,数组中每一个元素对应一个字段。写成数组的好处是可以给字段起个别名
			->field(['name'=>'姓名','sex'=>'性别','salary'=>'工资'])

			// ->where('staff_id','=',10) //where(字段、表达式,条件)
			->where('staff_id','>',10)//where(字段、表达式,条件)

			->find(); //输入主键进行查询

		dump($res);
	}

	public function select()
	{
		//2.查询满足条件的多条记录
		$res = Db::table('staff')
			->field(['name'=>'姓名','salary'=>'工资'])
			// ->where('salary > 3000')
			->where('salary','>',3000)
			//排序
			// ->order('salary DESC') //ASC:默认,升序; DESC:降序
			->order('salary', 'DESC') //ASC:默认,升序; DESC:降序
			->limit(5) //只显示满足条件的5条记录
			->select();

		dump($res);
	}

	public function insert()
	{
		//3.新增单条记录:insert()
		$data = [
			'name' => '胡一刀',
			'sex' => 0,
			'age' => 55,
			'salary' => 5888
		];

		//data($data):将要处理的数据打包到一个数组中 $option[]
		//insertGetId() == insert() + getLastInsID() //获取自增主键
		$num = Db::table('staff')->data($data)->insert(); 
		$id = Db::getLastInsID(); //获取新增数据的id
		return $num ? '新增成功,id='.$id : '没有添加成功';
	}

	public function insertAll()
	{
		//4.添加多条记录
		$data = [
			['name'=>'张飞','sex'=>0,'age'=>40,'salary'=>4000],
			['name'=>'关羽','sex'=>0,'age'=>45,'salary'=>4500],
			['name'=>'刘备','sex'=>0,'age'=>49,'salary'=>4900]
		];

		$num = Db::table('staff')->data($data)->insertAll();
		return $num ? '成功添加'.$num.'条记录!' : '没有添加成功';
	}

	public function update()
	{
		//5.更新操作:必须是基于前置查询,不允许无条件更新
		//更新使用update()方法,也是一个终级方法
		//
		//将工资小于等于4000元的员工加薪1000元
		// $num = Db::table('staff')
		// 	->where('salary','<=',4000)
		// 	//使用raw()获取原始数据值,直接写'salary+1000',因为salary为字符串,最终结果将为零。
		// 	->data(['salary'=> Db::raw('salary+1000')])
		// 	->update();

		$num = Db::table('staff')
			->update(['sex'=>1,'staff_id'=>16]);

		return $num ? '成功更新'.$num.'条记录!' : '没有记录被更新!';
	}

	public function delete()
	{
		//6.删除也必须基于前置查询,不允许无条件删除
		//删除使用delete()方法
		//删除单条件记录
		// $num = Db::table('staff')->delete(16); //基于主键值进行删除 staff_id=16
		//删除多条件记录
		// $num = Db::table('staff')->delete([24,25]); //将主键值 24、25的记录删除
		// 
		
		$num = Db::table('staff')
			->where('salary','>',100000) //删除条件
			->delete();

		//清空表
		// $num = Db::table('staff')->delete(true);

		return $num ? '成功删除'.$num.'条记录!' : '没有记录被删除!';

		/**
		 * 删除数据是一个极其危险的操作,建议使用框架提供的软删除来实现。
		 * 即用更新来模拟删除
		 */
	}
}

/**
 * 提示:
 * 在实际的开发过程中,尽可能不要在控制器中直接操作数据库,而是采用模型来操作数据库。
 */

运行实例 »

点击 "运行实例" 按钮查看在线实例


批改状态:未批改

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学