Thinkphp5 模型操作 记录

提示:记录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();
		

总结

都是手册中 比较常用的 示例写在这里记录一下

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wise man

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值