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/…. 我们的域名如果设置的文件目录要将前三级目录覆盖掉,那么在项目中的相对目录也要将前三级去掉。