thinkphp5学习笔记
1. 助手函数操作数据库
查询:
db('user')->where('id',1)->find();
db('user')->where('status',1)->select();
添加:
db('user')->insert($data);
db('user')->insertAll($list);
更新:
db('user')->where('id',1)->update(['name' => 'thinkphp']);
db('user')->where('id',1)->setField('name','thinkphp');
删除:
db('user')->delete();
db('user')->where('id',1)->delete();
2.静态方法操作数据库 (User::destroy()),事件函数只能这么用
User 指的是 当前模块model类
use app\admin\model\Article as articleModer ;
如果在控制器层调用方法,那么User可以这样表示:
1.\app\admin\model\Article::destroy()
2.articleModel::destroy()
3. 实例化类模型操作数据库
use app\admin\model\Article as articleModel ;$article=new articleModel();
然后执行相应操作
4. use 命名空间 和继承名空间类的区别
只use 不extends: 在当前类可以先实例化类对象然后进行调用命名空间里的方法
extends: 当前类就存在了命名空间里的方法,可以用this->来直接调用
5. 在HTML页面中进行判断输出
{if condition="$cate['type'] eq 0"} 列表
{else /}单页栏目 {/if}
6. 将从数据库获取的数据传给视图层从HTML中展现出来
$data:获取的数据
$this->assign('arr',$data);//将数据分配给前端{volist name='list' id='list'}<option value='{$list.id}' {$list.cateName}</option>
{/volist}//循环打印数据
7. 将图片文件从表单传到数据库
tp5思路是将文件传送到我们项目public目录下的uploads文件里,然后将图片的地址传到数据库保存,想要用图片的时候直接根据路径去拿图片即可。
注意事项:
//判断临时图片文件是否存在
if($_FILES['pic']['tmp_name']){$file=request()->file('pic');
//转移到uploads目录下$thumb=$file->move(ROOT_PATH.'public'.DS.'uploads');if($thumb){
//这一步很关键!!!,如果上传的是ROOT_PATH,那么会将图片的相对于本机的绝对地址传上去,到时候在前端<img src=''>就会找不到图片无法显示,所以改成相对路径,这样就可以显示图片$pic='/public的上一级路径'.'public'.DS.'uploads'.'/'.$thumb->getSaveName();$data['pic']=$pic;}}
问题又来了。。。
//当我们想要修改图片或者删除图片这时候相对路径又不管用了$thumbpath=$_SERVER['DOCUMENT_ROOT'].$arts['thumb'];if(file_exists($thumbpath)){@unlink($thumbpath);}//我们需要将文件的根路径加在相对路径前面然后才可以删除图片
8.验证
在admin\controller目录下创建一个文件夹(validate),在这里面存放每个模块需要验证的验证文件
validuate文件下:
namespace app\admin\validate;
use think\Validate;class ***(验证的模块) extends Validate
{protected $rule=[['字段','验证的规则','验证失败的提示语'],];//场景protected $scene=['add/edit模块'->['字段或者字段的某一项,用'.'来连接'],];
}在controller层进行验证:
use app\admin\validate;
class *** extend Controller
{public class add(){$data='表单提交上来的数据';$this->validate($data,'***.add'); //add场景}
}
9.创建索引数组
$arr=array();//将索引放入数组然后进行赋值,后面这种形式不对$arr[*** => ***]foreach ($data as $k => $v) {$arr[$v['enname']]=$v['value'];}
10.添加验证码
在登录界面需要添加一个验证码,添加代码如下
<img src='{:captcha_url()}' alt='captcha'>
如果点击验证码进行刷新,加上一个点击的触发事件
<img src='{:captcha_url()}' onclick="this.src='{:captcha_url()}?'+'Math.random();'" alt='captcha'>
如果这是在登录界面那就在登陆的控制层写验证
public function check($code){if(!$captcha_check($code)){报错语句}else{return true;}
}
11.控制器和模型层驼峰式命名与视图层命名注意点
控制器和模型可以采用驼峰,但是视图层文件夹只能用下划线间隔来命名
12.数据库查询where子句
where('字段名','表达式','查询条件'); //查询条件支持字符串和数组表达式 含义
EQ、= 等于(=)
NEQ、<> 不等于(<>)
GT、> 大于(>)
EGT、>= 大于等于(>=)
LT、< 小于(<)
ELT、<= 小于等于(<=)
LIKE 模糊查询
[NOT] BETWEEN (不在)区间查询
[NOT] IN (不在)IN 查询
[NOT] NULL 查询字段是否(不)是NULL
[NOT] EXISTS EXISTS查询
EXP 表达式查询,支持SQL语法
> time 时间比较
< time 时间比较
between time 时间比较
notbetween time 时间比较
13.项目的目录与域名对应的文件目录问题
问题描述:项目肯定要将一部分目录放到域名的文件目录中,那么从外网访问项目时候,项目中的路径都会以你的域名开始,所以在对项目某些路径设置的时候要根据自己余域名中设置的目录进行设置,比如:项目的完整目录如下: project/public/index/…. 我们的域名如果设置的文件目录要将前三级目录覆盖掉,那么在项目中的相对目录也要将前三级去掉。
thinkphp5学习笔记相关推荐
- php 调用 坐标拾取,坐标拾取 · thinkphp5学习笔记 · 看云
腾讯坐标拾取,一当前位置为中心: ~~~ 传递事件参数 window.addEventListener('message', function(event) { // 接收位置信息 var loc = ...
- 《TP5.0学习笔记---配置篇》
TP5.0学习笔记 TP5目录结构介绍 application目录是应用目录,我们整个应用所有的内容都写在这个目录中,在后续开发中,我们更多的时候都是在编写这个目录中的文件.在它里边有一个index文 ...
- PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 call
您的位置 首页 PyTorch 学习笔记系列 PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 发布: 2017年8月4日 7,195阅读 ...
- 容器云原生DevOps学习笔记——第三期:从零搭建CI/CD系统标准化交付流程
暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...
- 容器云原生DevOps学习笔记——第二期:如何快速高质量的应用容器化迁移
暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...
- 2020年Yann Lecun深度学习笔记(下)
2020年Yann Lecun深度学习笔记(下)
- 2020年Yann Lecun深度学习笔记(上)
2020年Yann Lecun深度学习笔记(上)
- 知识图谱学习笔记(1)
知识图谱学习笔记第一部分,包含RDF介绍,以及Jena RDF API使用 知识图谱的基石:RDF RDF(Resource Description Framework),即资源描述框架,其本质是一个 ...
- 计算机基础知识第十讲,计算机文化基础(第十讲)学习笔记
计算机文化基础(第十讲)学习笔记 采样和量化PictureElement Pixel(像素)(链接: 采样的实质就是要用多少点(这个点我们叫像素)来描述一张图像,比如,一幅420x570的图像,就表示 ...
最新文章
- 天天用事务,但是你知道MySQL事务的实现原理吗?
- 详解Adorner Layer(zz)
- Day 17: 使用 JBoss Forge 和 OpenShift 构建部署 JAVA EE 6 应用
- 【AI有识境】如何掌握好图像分割算法?值得你看的技术综述
- DCMTK:查询/检索服务类用户(C-MOVE操作)
- ASP.NET Core 发布至Linux生产环境 Ubuntu 系统
- php pdo 绕过,php-带PDO的忘记密码脚本(需要解密)
- 详述一次大量删除导致MySQL慢查的过程
- 【python基础知识】对文本数据库的一些基本操作
- ubuntu18.04下hadoop安装与集群配置
- android 过滤ip,EditText Android过滤器的IP地址###。###。###。###?
- 虚拟机访问本地mysql_本地访问虚拟机oracle数据库的尝试
- 数学建模·层次分析法基本步骤及参考代码
- Mysql数据表一直显示使用中
- Python Network(一)基础入门(节点和边基本概念,网络统计量)
- c语言 大写英文字母
- Java学习者看过来。。。这些优质项目千万别错过
- VMware下Linux与Windows共享文件
- Qt获取QTextEdit中的内容
- AcWing 1170 排队布局
热门文章
- python爬取网页停止_Python爬虫之爬取静态网页
- abb变频器如何拷贝_教你变频器参数怎样简单设置
- Appium+Python之PO模型(Page object Model)
- mybatis There is no getter for property named '*' in 'class java.lang.String
- kotlin的loop和Range、list和map
- .Spark Streaming(上)--实时流计算Spark Streaming原理介
- java.lang.InstantiationException: DWR can't find a spring config. See the logs for solutions
- C语言 读取文件中特定数据
- python 列表生成式 字典生成式
- c语言编程sinx泰勒公式_大白话5分钟带你走进人工智能-第12节梯度下降之原理泰勒公式(7)...