在控制器里的代码:
<?php
namespace app\index\controller;
use think\Controller;
use app\index\model\Users as UsersModel; //设置别名,防止与当前控制器冲突
class Users extends Controller
{
// public function show()
public function instance(UsersModel $users) //依赖注入
{
// $users = new UsersModel();
// dump($users->getName()); //模型名称
//新增一条记录
$users->name = 'Line';
$users->sex = 0;
$users->age = 18;
$users->save();
return '新增成功,id='.$users->Users_id;
//实际工作中,我们几乎全部采用模型的静态方法调用来实现数据操作
}
//模型查询
public function query()
{
//1.单条记录:静态get(主键/闭包)方法
//闭包就是一个匿名回调函数
//此时完成了二个操作:1.创建模型对象 2. 模型对象初始化(赋值)
$users = UsersModel::get(2); //以静态查询方式创建模型对象
//如果查询条件复杂可以使用闭包方式创建查询条件
$users = UsersModel::get(function($query){
$query->where('sex',0)->where('name','Line');
});
dump($users);
echo '<hr>';
//2.多条记录查询: all(主键列表/闭包)
//返回值是一个多维数组/对象数组
//all()也支持闭包查询,这也是我们以后常用的方式
$userss = UsersModel::all(function($query){
$query->where('age','<=',40)->where('salary','>',3000);
});
dump($userss);
echo '<hr>';
//all()返回的数组,我们一般是采用循环的方式进行遍历
foreach ($userss as $users) {
echo '姓名:'.$users->name.'<br>';
echo '年龄:'.$users->age.'<br>';
}
}
//软删除:必须在模型中进行先行配置
public function softDelete()
{
// UsersModel::destroy(1);
//生成的SQL语句不是删除,而是更新:
//UPDATE `Users` SET `delete_time` = 1527148290 WHERE `Users_id` = 1
//软删除记录不会出现在查询结果中
$res = UsersModel::where('Users_id < 5')->select();
//如果想让查询结果包括已经软删除的记录
$res = UsersModel::withTrashed()->where('Users_id<5')->select();
//如果只想查询已经被软删除的数据(回收站)
$res = UsersModel::onlyTrashed()->select();
dump($res);
}
}
在模型里的代码:
<?php
namespace app\index\model;
/**
* 实现软删除功能的步骤
* 1.在数据表中新增delete_time字段(字段名可自定义)
* 2.在模型中导入trait类:SoftDelete
* 3.设置模型属性 protected $deleteTime = '删除时间字段名';
* 4.设置软删除字段默认值[可选]
*/
use think\Model;
//使用软删除功能,必须先导入model/concern/SoftDelete.php
use think\model\concern\SoftDelete; //实际上一个trait方法集
class Users extends Model
{
use SoftDelete;
//设置数据表名
protected $table = 'Users';
//设置主键
protected $pk = 'Users_id';
//设置删除时间字段,配合软删除功能
protected $deleteTime = 'delete_time';
//设置软删除字段的默认值
protected $defaultSoftDelete = 0;
}