Blogger Information
Blog 38
fans 0
comment 3
visits 44010
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
模型的增删改查及软删除
意外的博客
Original
1154 people have browsed it
<?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();    仅使用一次的类引入;

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