提示:记录thinkphp 操作模型 参考看云tp5手册 传送门
一、定义
在 模块目录 中的 model 中
namespace app\index\model;
use think\Model;
class User extends Model
{
// 设置当前模型对应的完整数据表名称
protected $table = 'think_user';
//默认主键为自动识别,如果需要指定,可以设置属性:
protected $pk = 'id';
// 自动写入时间戳字段
protected $autoWriteTimestamp = 'int';
// 定义时间戳字段名
protected $createTime = 'createtime';
protected $updateTime = false;
protected $deleteTime = 'deletetime';
//设置只读字段
protected $readonly = ['name','email'];
// 追加属性
protected $append = [
];
//类型转换处理
protected $type = [
'status' => 'integer',
'score' => 'float',
'birthday' => 'datetime',
'info' => 'array',
];
}
二、处理数据库操作
1、添加
//方法一
$user = new User;
$user->data([
'name' => 'thinkphp',
'email' => 'thinkphp@qq.com'
]);
$user->save();
// 获取自增ID
echo $user->id;
//方法二
$user = User::create([
'name' => 'thinkphp',
'email' => 'thinkphp@qq.com'
]);
2、更新
//方法一
$user = User::get(1);
$user->name = 'thinkphp';
$user->email = 'thinkphp@qq.com';
$user->save();
//方法二
User::where('id', 1)
->update(['name' => 'thinkphp']);
模型的新增和更新方法都是save方法,系统有一套默认的规则来识别当前的数据需要更新还是新增。
实例化模型后调用save方法表示新增;
查询数据后调用save方法表示更新;
save方法传入更新条件后表示更新;
如果你的数据操作比较复杂,可以显式的指定当前调用save方法是新增操作还是更新操作。
3、删除
$user = User::get(1);
$user->delete();
// 删除状态为0的数据
User::destroy(['status' => 0]);
//通过数据库类的查询条件删除
User::where('id','>',10)->delete();
4、查询
取出主键为1的数据
$user = User::get(1);
echo $user->name;
// 使用数组查询
$user = User::get(['name' => 'thinkphp']);
// 使用闭包查询
$user = User::get(function($query){
$query->where('name', 'thinkphp');
});
echo $user->name;
三、扩展
1、获取器
获取数据的字段值后自动进行处理,例如,我们需要对状态值进行转换。
public function getStatusAttr($value)
{
$status = [-1=>'删除',0=>'禁用',1=>'正常',2=>'待审核'];
return $status[$value];
}
获取器还可以定义数据表中不存在的字段,例如:
可以直接用 $user->status_text; 调用
public function getStatusTextAttr($value,$data)
{
$status = [-1=>'删除',0=>'禁用',1=>'正常',2=>'待审核'];
return $status[$data['status']];
}
2、修改器
修改器的作用是可以在数据赋值的时候自动进行转换处理,例如:
//将name转换为小写
public function setNameAttr($value)
{
return strtolower($value);
}
四、常用示例
控制器调用
$find_my = \app\admin\model\Address::getMyDefault($this->auth->id);
模型中查询
public static function getMyDefault($id){
$addrss = new Address();
$addrss_find = $addrss->where(['user_id'=>$id,'is_default'=>1])->find();
return $addrss_find;
}
模型查询结果转换数组
$open = new Open();
$open_list = $open::where(['admin_id'=>$this->admin['id'],'c_id'=>$this->admin['c_id'],'type'=>$type])->select();
$list = collection($open_list )->toArray();
总结
都是手册中 比较常用的 示例写在这里记录一下