博客列表 >查询构造器实例-5月23日作业

查询构造器实例-5月23日作业

日薪月e的博客
日薪月e的博客原创
2018年05月28日 15:11:25617浏览

作业内容:

实例中主要包括了采用原生查询方式实现对数据库的增、删、改、查操作,其实包含了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 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议