批改状态:合格
老师批语:
<?php
namespace app\index\Controller;
use think\Controller;
use app\index\model\Staff as StaffModel;
class staff extends Controller
{
//新增
public function instance(staffModel $staff)
{
$staff->name ='詹姆斯';
$staff->sex =0;
$staff->age =35;
$staff->salary =12538;
$staff->save();
return '新增成功,id='.$staff->staff_id;
}
public function query()
{
// 单条记录查询
$staff =StaffModel::get(15);
dump($staff);
echo '<hr>';
//用闭包方式查询条件复杂的记录
$staff =StaffModel::get(function($query){
$query->where('sex','=',1)->where('salary','<',10000);
});
dump($staff);
echo '<hr>';
//多条记录查询
$staffs= StaffModel::all();
dump($staffs);
echo '<hr>';
//返回主键为6 11 ,14的数据
$staffs =StaffModel::all([6,11,14]);
dump($staffs);
echo '<hr>';
//all()也支持闭包查询
$staffs=StaffModel::all(function ($query){
$query->where('age','>',50)->where('salary','>',5000);
});
dump($staffs);
echo'<hr>';
//all()返回的数组 同时也可以用foreach来进行遍历
foreach ($staffs as $key ) {
echo'姓名:'.$key->name.'<br>';
echo'性别:'.$key->sex.'<br>';
echo'工资:'.$key->salary.'元'.'<hr style="color:red">';
}
echo "<hr>";
//使用闭包查询 同时支持查询变量从外部传入
//例如 查询条件由用户通过URL提供
$sex =$this->request->param('sex')?:0;
$salary =$this->request->param('salary')?:2938;
$staffs =StaffModel::all(function($query) use ($sex,$salary){
$query->where('sex','=',$sex)->where('salary','>=',$salary);
});
foreach ($staffs as $key ) {
echo'姓名:'.$key->name.'<br>';
echo'性别:'.$key->sex.'<br>';
echo'工资:'.$key->salary.'元'.'<hr style="color:red">';
}
}
//模型更新
public function update()
{
//更新基于查询
$staff=StaffModel::get(14);
$staff->name='kim';
$staff->save();
//使用静态方法来更新数据
StaffModel::update(
['name'=>'杰克'],
['staff_id'=>'14']
);
StaffModel::update(
['salary'=>\think\Db::raw('salary+1000')],
function($query){
$query->where('age','<',30);}
);
//也可以用查询构造器来更新数据
StaffModel::where('age','>',50)
->data(['salary'=> \think\Db::raw('salary+500')])
->update();
}
//模型 添加数据
public function create()
{
$data =[
'name'=>'约翰逊',
'sex'=>1,
'age'=>24,
'salary'=>6871
];
$field=['name','sex','age','salary'];
// StaffModel::create($data,$field);
// //使用查询构造器添加
}
//删除操作
public function delete()
{
StaffModel::destroy(14);
StaffModel::destroy([14,15,18]);//支持多键
//闭包查询 删除
StaffModel::destroy(function ($query){
$query->where('age','=',58)->where('salary','>',15000);
}) ;
//用查询构造器 删除
StaffModel::where('age','<',10)
->delete();
}
public function softDelete()
{
StaffModel::destroy(14);
//被删除的记录 无法通过普通方法查到
$staff=StaffModel::where('staff_id','=',14)->select();
//查询被软删除的数据
$staff=StaffModel::withTrashed()->where('staff_id','=',14)->select();
//从回收站查询并恢复软删除数据
$staff =StaffModel::onlyTrashed()->where('staff_id','=',14)->find();
$staff->restore();
$staff=StaffModel::where('staff_id','=',14)->select();
dump($staff);
}
}
?>点击 "运行实例" 按钮查看在线实例
软删除的步骤
在模型中导入model/concern/SoftDelete 以导入其中的trait方法集
在数据表中新增delete_time字段(可自行定义,与之相匹配即可)
在相应模型中设置模型属性 protected $deleteTime = '删除时间字段名';
在类中调用softDelete;
在控制器中创建同名方法 即可使用。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号