thinkphp5-模型
2021/10/30 20:15:02
本文主要是介绍thinkphp5-模型,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
基本用法
命令行生成User模型
php think make:model index/User
模型调用
$user = new \app\index\model\User(); $user = $user->where('id',3)->find(); var_dump($user->toArray());
$user = model('user')->where('id',3)->find(); var_dump($user->toArray());
添加数据
添加一条数据
$user = new \app\index\model\User(); $user->name = 'huyongjian11'; $user->status = 1; $user->save();
添加多条数据
$user = model('user'); $list = [ ['name'=>'胡勇健1','status'=>1], ['name'=>'胡勇健2','status'=>0] ]; $user->saveAll($list);
更新数据
$user = model('user')->where('id',5)->find(); $user->name = '胡勇健'; $user->save();
删除数据
$user = model('user')->where('id',5)->find(); $user->delete();
获取数据
$user = model('user')->get(6);
$user = model('user')->where('id',5)->find();
$users=model('user')->where('id','>',6)->select(); foreach ($users as $user){ dump($user->toArray()); }
聚合查询
model('user')->count(); model('user')->max('id'); model('user')->min('id'); model('user')->avg('id'); model('user')->sum('id');
获取器
User模型
<?php namespace app\index\model; use think\Model; class User extends Model { public function getStatusAttr($value) { $status = [-1=>'删除',0=>'禁用',1=>'正常',2=>'待审核']; return $status[$value]; } }
控制器
$user = model('user')->where('id',6)->find(); var_dump($user->status);
修改器
User模型
public function setNameAttr($value) { return strtolower($value); }
控制器
$user = model('user')->where('id',6)->find(); $user->name = 'HUYONGJIAN'; $user->save();
时间戳
User模型
protected $autoWriteTimestamp = true;
protected $autoWriteTimestamp = 'datetime';
// 定义时间戳字段名 protected $createTime = 'create_at'; protected $updateTime = 'update_at';
模型分层
- 数据层:app\index\model\User 用于定义数据相关的自动验证和自动完成和数据存取接口
- 逻辑层:app\index\logic\User 用于定义用户相关的业务逻辑
- 服务层:app\index\service\User 用于定义用户相关的服务接口等
三个模型层的定义如下:
app\index\model\User.php
<?php namespace app\index\model; use think\Model; class User extends Model { }
实例化方法:\think\Loader::model('User')
Logic类:app\index\logic\User.php
<?php namespace app\index\logic; use think\Model; class User extends Model { }
实例化方法:\think\Loader::model('User','logic');
Service类:app\index\service\User.php
<?php namespace app\index\service; use think\Model; class User extends Model { }
实例化方法:\think\Loader::model('User','service');
模型数据转换
$user->toArray();
$user->toJson();
模型事件
User模型
<?php namespace app\index\model; use think\Model; class User extends Model { //初始化 protected function initialize() { parent::initialize(); self::event('before_update', function ($user) { //事件处理 }); } }
标签位 描述 before_insert 新增前 after_insert 新增后 before_update 更新前 after_update 更新后 before_write 写入前 after_write 写入后 before_delete 删除前 after_delete 删除后
快捷注册
User::beforeInsert(function ($user) { if ($user->status != 1) { return false; } });
标签位 描述 beforeInsert 新增前 afterInsert 新增后 beforeUpdate 更新前 afterUpdate 更新后 beforeWrite 写入前 afterWrite 写入后 beforeDelete 删除前 afterDelete 删除后
模型关联
一对一关联
hasOne('关联模型名','外键名','主键名',['模型别名定义'],'join类型');
用法
<?php namespace app\index\model; use think\Model; class User extends Model { public function profile() { //return $this->>hasOne('Profile'); return $this->hasOne('Profile','user_id','id'); } }
一对多关联
hasMany('关联模型名','外键名','主键名',['模型别名定义']);
用法
<?php namespace app\index\model; use think\Model; class User extends Model { public function comments(){ //return $this->hasMany('comment'); return $this->hasMany('comment','user_id','id'); } }
这篇关于thinkphp5-模型的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-19php8的协程和hyperf的协程有什么区别?-icode9专业技术文章分享
- 2024-12-19php8 的fiber是什么?-icode9专业技术文章分享
- 2024-12-05怎么在php8,1 里面开启 debug?-icode9专业技术文章分享
- 2024-12-05怎么在php8,1 里面开启 debug?-icode9专业技术文章分享
- 2024-11-29使用PHP 将ETH账户的资产汇集到一个账户
- 2024-11-23怎么实现安卓+php 热更新方案?-icode9专业技术文章分享
- 2024-11-22PHP 中怎么实现判断多个值是否为空、null 或者为 false?-icode9专业技术文章分享
- 2024-11-11开源 PHP 商城项目 CRMEB 二次开发和部署教程
- 2024-11-09怎么使用php在kaufland平台刊登商品?-icode9专业技术文章分享
- 2024-11-05PHP的抽象类和接口是什么,有什么区别-icode9专业技术文章分享