1. 模型操作
php think make:model 模块名/模型名(首字母大写)
# 非必须
protected $pk = 'id'; # 设置主键名称
protected $table = 'think_user'; #设置当前模型对应的完整数据表名称
// 模型实例化
//$model = new Student();
$model = model('student');
1.1 添加数据
$data = $request->post();
## 添加方案一:
$model = new Student();
// 方式一:直接保存
$ret = $model->save($data);
// 方式二:过滤保存部分字段
$ret = $model->allowField(['title','name'])->save($data);
## 添加方案二:
$ret = Student::create($data);
1.2 更新数据
User::where('id',1)->update(['name'=>'thinkphp']);
1.3 删除数据
// 方式一:
$model = Student::find(217); 或 $model=Student::get(217);
$ret = $model->delete();
// 方式二 : 静态方法
$ret = Student::destroy(217);
// 删除多条
$ret = Student::destroy([1,2,3]);
6.4 软删除
use think\model\concern\SoftDelete
# mode类里面 引入:
use SoftDelete;
// 删除的字段名
protected $deleteTime = 'delete_time';
# 操作方法
// 软删除
$ret = Student::destroy(217);
// 真删除
$ret = Student::destroy(217,true);
6.5 trait 解决多继承 php5.4
6.6 模型查询数据
//get直接查询,不可以带 where 条件; find 两者都可以,推荐
$ret = Student::get(217);
$ret = Student::find(217); ## 推荐使用 find
$ret = Student::where('id',217)->find(); #这种只能使用find
// 条件分组 where() or ()
//查询
$ret = Student::where('title','我是张三')->select();
// 动态查询 getBy固定+ 字段名(首字母大写)
$ret = Student::getByTitle('我是张三');
6.7 获取器 对原始数据自动处理
// 方式一
$ret = Student::withAttr('title',function($value,$data){
return 'hello world'.$value
})->where('id','>',5)->select();
// 方式二 (在model 里面设置)-- 获取器 get字段名Attr,如果有下划线,下划线的首字母大写
public function getCreateTimeAttr($value){
return date('Y年m月d日 H时i分s秒',strtotime($value));
}
<?php
namespace app\common\model;
use think\Model;
class Student extends Model{
# 非必须
protected $pk = 'id'; # 设置主键名称
protected $table = 'student'; #设置当前模型对应的完整数据表名称
public function aa(){
return 'aab';
}
}
<?php
namespace app\index\controller;
use think\Controller;
// 引入模型
use app\common\model\Student;
use think\Request;
class Students extends Controller{
public function demo(){
echo '测试';
}
// 展示页面
public function page(){
return view('index@student/add');
}
// 通过 post传参,保存数据
public function add(Request $request){
// 模型实例化
//$student = new Student();
$student = model('student');
$value = $request->post();
// ---- 方法一 --------- 返回true
// 保留全部字段
$ret = $student->save($value);
// 过滤保存部分字段
//$ret = $student->allowField(['name','number'])->save($value);
// ---- 方法二 ------- 返回插入的数据
$ret = Student::create($value);
dump($ret);
}
//更新数据
public function upd(){
$data = ['content'=>'这条是更新数据'];
$ret = Student::where('id',22)->update($data);
dump($ret);
}
//删除数据
public function del(){
// 方式一:
// $model = Student::find(23);
// $model = Student::get(23);
// $ret = $model->delete();
// 方式二 静态方法
$ret = Student::destroy(22);
$ret = Student::destroy([1,2,3]);
dump($ret);
}
// 软删除 -- 在 model引入SoftDelete后,可进行软删除
public function delr(){
$ret = Student::destroy(20);
dump($ret);
}
// 模型查询数据 get直接查询,不可以带 where 条件; find 两者都可以,推荐
public function sele(){
// $ret = Student::get(19);
// $ret = Student::find(19);
// $ret = Student::where('id',19)->find();
// 条件分组 where() or ()
//查询字段
// $ret = Student::where('name','张三')->select();
// 动态查询 getBy固定+ 字段名(首字母大写)
$ret = Student::getByName('张三');
dump($ret);
}
// 获取器 对原始数据自动处理
public function getAll(){
$ret = Student::withAttr('name',function($value,$data){
return '你是最美的'.$value;
})->where('id',19)->select();
dump($ret);
}
}