Blogger Information
Blog 42
fans 0
comment 1
visits 26050
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
查询构造器实例-5月23日作业
日薪月e的博客
Original
610 people have browsed it

作业内容:

实例中主要包括了采用原生查询方式实现对数据库的增、删、改、查操作,其实包含了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.'条记录!' : '没有记录被删除!';

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

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

运行实例 »

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


Correction status:Uncorrected

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post