博客列表 >数据库查询构造器中10个最常用方法-2018年5月24日18点

数据库查询构造器中10个最常用方法-2018年5月24日18点

旺小舞的博客
旺小舞的博客原创
2018年05月24日 18:41:59889浏览

笔记:删除和更新需基于条件,不然很危险,insertGetId() == insert() + getLastInsID[],

实例:对数据库php里staff表的CURD操作,

配置数据库,在 controller控制器层创建Query控制器(Query.php),并引入Db,创建Query类

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

class Query
{
	//读操作返回的都是二维数组,没有满足条件的记录,返回的是一个空数组、
	//写操作返回的是受影响的记录数,如果没有返回0
	public function find()
	{
		//查询单条记录数
		$res = Db::table('staff')
		// ->field('name,sex,salary')
		->field(['name'=>'姓名','sex','salary'])
		->where('staff_id','=',10) //where(字段、表达式、条件)
		->find();
		dump($res);
	}

	public function select()
	{
		//查询多条记录
		$res = Db::table('staff')
		->field(['name'=>'姓名','sex,salary'])
		// ->where('salary > 3000')
		->where('salary', '>',3000)//表达式
		->order('salary', 'DESC')
		->select();
		dump($res);
	}
	public function insert()
	{
		//新增单条记录:insert()
		$data=[
			'name'=>'胡三刀',
			'sex'=>0,
			'age'=>32,
			'salary'=>6200
		];

		// $num = Db::table('staff')->insert($data);
		// $id = Db::getLastInsID();
		// return $num? '添加成功,id='.$id:'没有记录被添加';

		//data($data):将要处理的数据打包到$option[]
		//insertGetId() == insert() + getLastInsID[]
		
		// $id = Db::table('staff')->insertGetId($data);
		// return $id? '添加成功,id='.$id : '没有记录被添加';

		// $num = Db::table('staff')->data($data)->insert();
		// $id = Db::getLastInsID();
		// return $num? '添加成功,id='.$id:'没有记录被添加';
		// 
		// 新增多条记录insertAll()
		$data = [
			['name'=>'刘备','sex'=>0,'age'=>45,'salary'=>9000],
			['name'=>'关羽','sex'=>0,'age'=>42,'salary'=>8000],
			['name'=>'张飞','sex'=>0,'age'=>38,'salary'=>8000],

		];
		$num = Db::table('staff')->data($data)->insertAll();
		return $num? '添加成功,新增了'.$num.'条记录':'没有记录被添加';
	}
	public function update()
	{
		//更新操作必须是基于前置查询,不允许无条件更新 ,也是一个终极方法
		//将工资小于等于4000的员工加薪1000
		// $num = Db::table('staff')
		// 	->data(['salary'=>Db::raw('salary+1000')])
		// 	->where('salary','<=',4000)
		// 	->update();

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

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

	public function delete()
	{
		//删除也必须基于前置查询,不允许无条件删除
		//删除用的是delete()
		// $num = Db::table('staff')->delete(26);
		// $num = Db::table('staff')->delete([18,19,25]);
		$num = Db::table('staff')->where('staff_id',19)->delete();

		// $num = Db::table('staff')->where(true)->delete();//可以将当前表清空

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

		//删除数据是一个危险的操作,建议使用软删除来实现,用更新来模拟删除
	}
}
//提示:在实际的开发过程中,尽可能不要在控制器中操作数据库,而是采用模型来实现

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议