1.分页操作
paginate()
方法使用:参数是每页显示几条数据
后台代码:
前台代码:用后台传过来的变量,调用render()
方法
实际效果:
2.多表关联
with()
,belongsTo()
多对一comment表:评论表
article表:文章表
前台评论表显示
comment(评论表)
中,有个article_id
代表此评论属于哪篇文章
前台显示需要获取到article(文章表)
的title
值
在comment(评论表)
模型里多对一使用belongsTo()
在comment(评论表)
控制器里:使用with('article')
关联文章表
这里就使用到关联的article
表里的title
字段
这是另一个一对多方法使用:hasMany()
3.表联合删除
以上面的为例,如果删除文章表,那对应的评论也应该被删除,这时候就需要文章表关联一下评论表
在
article(文章表)
模型里,定义一个一对多的方法
在article(文章表)
控制器里关联comment
表,且一起删除together()
4.验证器使用,整体的数据传递过程
验证思路:数据提交后传递的路线:
html -> controller -> model -> validate
html
:提交数据
controller
:整理数据
model
:处理数据
validate
:验证数据
表单:
提交:ajax
方法
把数据整理好,传给admin
model的register()
方法
admin
模型先将数据给验证器的register
场景验证
验证器里先定义规则,再写验证场景,不同场景,验证不同数据
5.验证码的captcha
表单里,写个
input
:提交验证码值和img
:显示验证码
控制器的createVerify()
方法里传入验证码的配置,返回一个能在前端显示的图
前端js里面写一个验证码刷新方法,参数是为了防止页面缓存,导致没法刷新新的图
6.三元运算符在模板里的使用
注意:模板里的代码,得用''括起来
<td>{$vo.status == 1 ? '正常': '<span style="color: red">禁用</span>'}</td> {if $vo.is_super == 1}<td style="color: red">超级管理员</td>{else/}<td>普通管理员</td>{/if}
7.关联表
注意:
7.关联表with()设置属性
方式1:闭包:对关联预加载的表里的属性进行设置,
with(['comment'=>function($query){$query->order('create_time','desc');}])
方式2:关联2个1级,1个2级, 再根据2级里的字段,进行排序
一级:img
,property
二级:imgUrl
(img.imgUrl
)
8.事务
注意:为了数据库操作的安全严谨性
开启事务Db::startTrans();
数据操作........
提交事务Db::commit();
数据回滚Db::rollback();