php能力模型,ThinkPHP5--基础篇(模型)

ThinkPHP5--基础篇(模型)

一、数据库连接

i. 使用应用配置文件 conf/config.php

app目录同级 新建conf/database.php

5f0fad007fe2

image.png

使配置文件生效 入口文件配置路径(入口文件 安全检测|过滤请求|定义常量)

5f0fad007fe2

image.png

config()助手函数 打印数据库信息测试

5f0fad007fe2

image.png

上述访问路径 可在Apache(或其他服务器)配置文件中配置虚拟域名 指定根目录等等简化 详情参见【配置篇】

ii. Db::connect()|Db::connect([‘’=>’’,...])

use think\Db ; Db::connect() ;

5f0fad007fe2

image.png

5f0fad007fe2

image.png

或者是 $res = Db::connect(); dump($res) ;打印出东西 不代表连接上了数据库

Db::connect([‘’=>’’,...]); 接受参数 数组类型 即database.php里面的配置

5f0fad007fe2

image.png

5f0fad007fe2

image.png

此处 仅仅是打印出 配置的连接信息而已......

5f0fad007fe2

image.png

5f0fad007fe2

image.png

或者

5f0fad007fe2

image.png

传入的参数必须在conf/config.php中配置 并且以此参数为key的value值 同database.php 配置的’database’=>[‘’=>’’,...] 数据库信息

iii. 数据库查询操作

原生sql

a) Db::query($sql) //直接传入sql语句

5f0fad007fe2

image.png

5f0fad007fe2

image.png

b) Db::execute(‘’,[])//写操作(增|删|改) 两个参数:sql语句 ,传入数组类型绑定的参数

5f0fad007fe2

image.png

5f0fad007fe2

image.png

5f0fad007fe2

image.png

Db::table(‘test_user’)->select(); 查询所有 返回值是二维数组

5f0fad007fe2

image.png

5f0fad007fe2

image.png

Db::table('test_user')->where('id','>','3')->select() ; //where条件 查询部分

![

5f0fad007fe2

image.png

5f0fad007fe2

image.png

Db::table('test_user')->find(); 查询一条记录 不加where条件 默认返回第一条 查询不到结果返回 NULL

5f0fad007fe2

image.png

5f0fad007fe2

image.png

Db::table('test_user')->value('userName') ; 查询一条记录 返回某个字段的值 查询的记录不存在 返回NULL

5f0fad007fe2

image.png

5f0fad007fe2

image.png

Db::table('test_user')->column('userName'); 返回某一列的值 一维数组

a) 传入一个参数

5f0fad007fe2

image.png

5f0fad007fe2

image.png

b) 传入第二个参数 返回一维数组 key[第二个参数]=>value[第一个参数] 若记录不存在 则返回空数组

Db::name('user');//不用传入表前缀 (已经在配置文件中配置了表前缀)

5f0fad007fe2

image.png

5f0fad007fe2

image.png

助手函数db(‘user’)不需要传入表前缀

a) Db::name(‘user’); 单例模式 需要引入 user think\Db

b) 助手函数db()每次调用实例化一次 传递第三个参数 不会重新实例化 db(‘user’,[],false)

iv. 数据库添加

insert([]) 默认返回值是影响记录行数

5f0fad007fe2

image.png

5f0fad007fe2

image.png

5f0fad007fe2

image.png

insertGetId([]) 返回添加成功后 新增记录的id

5f0fad007fe2

image.png

5f0fad007fe2

image.png

5f0fad007fe2

image.png

insertAll([]) 批量添加数据 返回影响行数

5f0fad007fe2

image.png

5f0fad007fe2

image.png

v. 数据库更新

update([]) 返回影响行数 UD操作 传入id

5f0fad007fe2

image.png

5f0fad007fe2

image.png

也可以 ->where([‘id’=>XXX])

setField('userName','ceshi45')修改一个字段的值 返回影响行数

5f0fad007fe2

image.png

5f0fad007fe2

image.png

5f0fad007fe2

image.png

setInc(‘num’,3); num字段每次增加3 第二个参数不传 默认一次自增1 返回影响行数

setDec(‘num’,3); 同上自减

vi. 数据删除

delete() 删除条件 返回影响行数

5f0fad007fe2

image.png

5f0fad007fe2

image.png

如上 如果按照 id删除 id又是表里面的主键

可以直接$db->delete(2);

删除所有 $db->where(“1=1”)->delete() ;

vii. 条件构造器

buildSql()返回当前sql语句

5f0fad007fe2

image.png

5f0fad007fe2

image.png

where(‘’,’’,’’)字段 条件 值(字符串类型 或者数组类型【between|in 需要传入范围】)

5f0fad007fe2

image.png

5f0fad007fe2

image.png

where([]) 默认是’’=>’’ key=value ‘’=>[‘条件’,’’]

5f0fad007fe2

image.png

5f0fad007fe2

image.png

5f0fad007fe2

image.png

5f0fad007fe2

image.png

where('id','EXP','in(1,5)')

5f0fad007fe2

image.png

5f0fad007fe2

image.png

多个where AND

5f0fad007fe2

image.png

5f0fad007fe2

image.png

多个where OR

5f0fad007fe2

image.png

5f0fad007fe2

image.png

viii. 链式操作

->field("typeName,id,title,ctime") //限定查询的列

->order("id desc") //按照id降序

->limit(0,5)->select() ; //查询5条数据

5f0fad007fe2

image.png

5f0fad007fe2

image.png

用limit分页的时候 limit((当前页-1)*每页显示条数,每页显示条数)

page(当前页,每页显示条数)

group("pid")

5f0fad007fe2

image.png

5f0fad007fe2

image.png

二、模型

i. 模型(model)文件定义

app\模块\model\文件名.php 文件名与表名对应(去掉表前缀) 遵循驼峰命名法

表名:test_user -->User test_type_info --->TypeInfo

5f0fad007fe2

image.png

引入model测试

5f0fad007fe2

image.png

5f0fad007fe2

image.png

实例化 $user = new User ; $res = $user::get(21) ;

5f0fad007fe2

image.png

5f0fad007fe2

image.png

需要用到多个模型的时候 Loader::model('User') ;

5f0fad007fe2

image.png

5f0fad007fe2

image.png

model(‘’) 助手函数 加载model类 有可能会被覆盖

5f0fad007fe2

image.png

5f0fad007fe2

image.png

ii. 模型查询

get()

a) 传主键 get(21)

b) 传查询条件 闭包函数

User::get(function($query) {

$query->where('id','20') ;

}) ;

5f0fad007fe2

image.png

5f0fad007fe2

image.png

find()条件 取一条记录

5f0fad007fe2

image.png

5f0fad007fe2

image.png

all() 获取多条数据 不传参数 查询所有 传入参数’1,2,3’主键 或者[1,2,3] 或者是闭包函数

5f0fad007fe2

image.png

5f0fad007fe2

image.png

查询单个字段的值 value(‘’)

5f0fad007fe2

image.png

5f0fad007fe2

image.png

获取一列的值 column(‘value’,’key’) 用法同上

iii. 使用模型添加数据

create([],true) 第二个参数 过滤掉无效字段 将第二个参数传为数组[‘name’,’auth’] 则新增数据的时候 只会新增name auth

5f0fad007fe2

image.png

5f0fad007fe2

image.png

实例化模型 save()

5f0fad007fe2

image.png

5f0fad007fe2

image.png

或者直接save([‘’=>’’,...]) ; 返回影响行数

5f0fad007fe2

image.png

5f0fad007fe2

image.png

allowField(true)->save([]) ;

5f0fad007fe2

image.png

5f0fad007fe2

image.png

5f0fad007fe2

image.png

批量添加 saveAll([[],[]]) ;

iv. 使用模型更新数据

update(['id'=>58 ,

'userName'=>'qazxwsedcrf'

]) ;

传主键

5f0fad007fe2

image.png

5f0fad007fe2

image.png

5f0fad007fe2

image.png

update([

'userName'=>'q1111'

],['id'=>58]) ; 第二个参数还可以是闭包函数 用法同上

5f0fad007fe2

image.png

5f0fad007fe2

image.png

5f0fad007fe2

image.png

where('id',58)->update(['userName'=>'qwe111111']) ; 返回影响行数 推荐

5f0fad007fe2

image.png

5f0fad007fe2

image.png

5f0fad007fe2

image.png

save()

5f0fad007fe2

image.png

5f0fad007fe2

image.png

save([],[])|save([],function($query){}) 推荐

5f0fad007fe2

image.png

5f0fad007fe2

image.png

5f0fad007fe2

image.png

5f0fad007fe2

image.png

saveAll([[],[]]) 传二维数组 传主键

v. 使用模型删除数据

destroy(58) 传主键 返回影响行数

5f0fad007fe2

image.png

5f0fad007fe2

image.png

destroy(['id'=>57]) ; 传条件 返回影响行数

5f0fad007fe2

image.png

5f0fad007fe2

image.png

destroy(function($query) {

$query->where('id','>','50') ;

}) ; 闭包函数 传条件 返回影响行数

5f0fad007fe2

image.png

5f0fad007fe2

image.png

$user->delete() ; 或者User::where(‘id’,’>’,’10’)->delete() 删除所有 where(‘1=1’) 条件永远为真

5f0fad007fe2

image.png

5f0fad007fe2

image.png

vi. 模型聚合操作

count() 查询总记录数 可加条件 where(‘id’,’>’,’15’)->count()

5f0fad007fe2

image.png

where()->max(‘字段名’)

求和 where()->sum(‘字段名’)

求平均值 where()->avg(‘字段名’)

最小值 where()->min(‘字段名’)

vii. 模型获取器

场景 状态:0|1 存储 展示的时候 开启|关闭

model/模型.php 模型文件 public function getAuthAttr() {}

方法名固定: public function get字段名Attr(){}

5f0fad007fe2

image.png

5f0fad007fe2

image.png

5f0fad007fe2

image.png

viii. 模型修改器+自动完成

如 存储密码的时候 自动md5加密

model文件 public function setPasswordAttr($val) 第二个参数数组类型 将要新增的记录

5f0fad007fe2

image.png

5f0fad007fe2

image.png

控制器新增数据

5f0fad007fe2

image.png

5f0fad007fe2

image.png

5f0fad007fe2

image.png

自动完成

a) 模型文件:

5f0fad007fe2

image.png

b) 控制器文件新增

5f0fad007fe2

image.png

5f0fad007fe2

image.png

ix. 模型时间戳+软删除

时间戳 (添加时间|更新时间) model类提供了配置 自动管理

添加时间|更新时间 默认是create_time update_time

a) conf/database.php 全局配置 若是表里没有create_time|update_time 会报错 不推荐

// 自动写入时间戳字段

'auto_timestamp' => true,

b) Model文件中 protected $autoWriteTimestamp = true ; 新增|更新时自动配置时间戳 (默认是create_time|update_time ) 如果不是 需要指定 如下 需要指定成使用的 create_at|update_at

如果只需要用到一个时间 把另外一个设置为false即可

5f0fad007fe2

image.png

软删除:给作废的记录打个 不会真正的从数据库删除 标记软删除时间 默认是delete_time

a) delete_time默认是NULL 软删除之后 值是时间戳

b) 使用软删除 model类中 use traits\model\SoftDelete ;

5f0fad007fe2

image.png

c) 控制器中 destroy()|delete() 执行软删除 软删除之后 用withTrashed(true) 查询被软删除的记录

5f0fad007fe2

image.png

$res->getData() 获取原始数据

d) 软删除 一般会有垃圾箱|回收站 仅查询全部被软删除的记录 onlyTrashed()

5f0fad007fe2

image.png

e) 软删除数据恢复 update将delete_time字段设置为NULL

f) 记录软删除 默认是delete_time 可在model类中修改 方法同上

5f0fad007fe2

image.png

g) 真正将数据库中记录删除 destroy(‘’,true) |delete(true)

5f0fad007fe2

image.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值