<?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(); 仅使用一次的类引入;