返回 查询构造器的增...... 登陆

查询构造器的增删改查及软删除

意外 2019-05-20 11:29:04 165
<?php
namespace app\index\controller;
use think\Controller;
use app\index\model\Staff as StaffModel;	//设置模型别名

//用法模型来查询数据;
class Staff extends Controller
{
	// $staff = new StaffModel();
	public function instance(StaffModel $staff)
	{
		//因为方法里面不建议new对象;所以用依赖注入;
		// $staff = new StaffModel();	
		var_dump($staff->getName());
		
		$staff -> qq = '悟空';
		$staff->password = 101010;
		$staff->avatar = 'www.php.edu.cn';

		$staff->save();
		return '添加成功,id='.$staff->id;

	}


	//查询;
	public function query(){
		// 闭包就是一个匿名回调函数,将函数作为参数进行传递;
		// get:获取满足条件的第一条信息;
		/*
		$staff = StaffModel::get(1);
		dump($staff);
		// var_dump($staff);
		echo $staff->qq;
		echo '<br>';

		//闭包来创造条件;
		$like = StaffModel::get(function($query){
			$query->where('id','>',1);
		});
		dump($like);
		echo '<br>';

		// 静态调用Db类的查询构造器:where是框架里的静态方法
		$like = StaffModel::where('id=1')->find();
		dump($like);
		echo '<br>';
		*/

	// all查询多条数据;
		// $staff = StaffModel::all();
		// // dump($staff);
		// foreach($staff as $val){
		// 	echo $val.'<br>';
		// }


		//采用闭包实现将请求变量注入闭包的条件中;
	//	$this->request : //请求对象;
	//	$this->request == namespace think\facade\Request
	//	param()  :参数
		$id = $this->request->param('id') ?:2;
		$staff = StaffModel::all(function($query) use ($id){
			$query->where('id','>',$id);
		});
		//在url上输入id/3页可以查询到数据;
		dump($staff);


	}

	//修改;
	public function update()
	{	//用静态属性get获取数据;类名::方法/属性;
		// $staff = StaffModel::get(3);
		// $staff->qq = '雷恩';
		// $staff->save();
		// dump($staff);


		// $staff = StaffModel::update(['q'=>'羊来'],['id'=>3]);
		// return $staff ?'修改成功'.$staff:'修改失败';

		//所谓复杂的更新方法;
		// StaffModel::update(
		// 	//用这样的方式引用了类;
		// 	['password'=> \think\Db::raw('password+1')],
		// 	function($query){
		// 		$query->where('id=10');
		// 	}
		// );

		//查询构造器方式;
		//StaffModel::where('id=9')	//条件
		//->data(['password'=> \think\Db::raw('password+1')])	//对象;
		//->update();//结果;

	}

	//更新
	public function create(){
		//create('数据','字段')
		$data = [
			'qq'=>'唐僧',
			'password'=>101230,
			'avatar'=>'static\image\1.jpg'
		];
		$field = ['qq','password','avatar'];
		// StaffModel::create($data,$field);

		//查询构造器方式更新;
		StaffModel::insert($data);

	}

		//删除;
		// public function destroy(){
		// 	// destory是框架静态属性:
		// 	// StaffModel::destroy(12);
		// 	// StaffModel::destroy([12,13,15]);

		// 	// 闭包删除
		// 	StaffModel::destroy(function($query){
		// 		$query->where();
		// 	});

		// 	//查询构造器方式删除;
		// 	StaffModel::where()->destroy();
		// }


		// 软删除必须在模型中进行设置;
		public function softDelete(){
			// StaffModel::destroy(1);		//软删除id=1的数据;

			//软删除的数据在普通查询中不可见;
			//$res = StaffModel::where('id < 4')->select();

			//查询包括软删除的数据;
		//	$res = StaffModel::withTrashed()->where('id < 4')->select();

			//查询软删除的数据;
			//$res = StaffModel::onlyTrashed()->select();

			//恢复软删除记录;
			$staff = new StaffModel;	//这行最好用依赖注入
			$res = $staff->restore('id=1');

			dump($res);
		}


}
<?php
//软删除步骤:
// 1.在表中添加一个字段:删除时间:delete_time
// 2.在模型中添加一个属性:$deleteTime = 'delete_time';
// 3.在模型中导入软删除的trait类库,:SoftDelete;
//4.最新版支持设置软删除的默认字段值;

namespace app\index\model;
use think\Model;
use think\model\concern\SoftDelete;	//trait方法集;

class Staff extends Model
{
	use SoftDelete;	//将SoftDelete类中所有的代码复制到当前类中;

	//设置数据表名称;
	protected $table = 'admin';
//	protected $pk = 'id';

		//设置软删除时间的默认值;
	protected $defaultSoftDelete = 0;
		//设置删除时间的字段名;
	protected $deleteTime = 'delete_time';
	
	
	// public function x(){
	// 	//这里引用了db类;
	// 	$table = \think\Db::table('admin')->select();
	// 	return $table;
	// }
}

$table = \think\Db::table('admin')->select();    仅使用一次的类引入;

最新手记推荐

• 用composer安装thinkphp框架的步骤 • 省市区接口说明 • 用thinkphp,后台新增栏目 • 管理员添加编辑删除 • 管理员添加编辑删除

全部回复(0)我要回复

暂无评论~
  • 取消 回复 发送
  • PHP中文网