ThinkPHP学习笔记
基础学习:
1.循环输出数组:
<volist name="wiclick_ads" id="vo"> //wiclick_ads 为分配过来的数组 vo 要循环的变量
<eq name="vo.ad_id" value="$ad_id"> //$ad_id 为分配过来的变量
<php>break;</php> //满足相等条件 跳出循环不再继续循环
</eq>
</volist>
2.内置模板引擎输出:
<title>{$wiclick_adb.adb_name}</title>
3.返回:
<a href="javascript:window.history
.back()" class="ht-i">返回</a>
4:将得到的内容提交进行转义(ueditor):
{:htmlspecialchars_decode
($vo['content'])} //执行函数并输出返回值:{:function()}
5.数组索引:{$k}
<volist name="list" id="vo" key="k" >
{$k}.{$vo.name} //若第一条 {$k} 则为1
</volist>
6.assign 标签
<assign name="ad_id" value="$vo['ad_id']"/> //把 value的值给name
6.if标签:
<if condition="($name eq 1) OR ($name gt 100) "> value1
<elseif condition="$name eq 2"/>value2
<else /> value3
</if>
7.php标签:<php>echo 'Hello,world!';</php>
8.比较标签:
<比较标签 name="变量" value="值">内容</比较标签>
<eq name="name" value="value">
value
</eq> 在这里name的值等于value的值就输出
eq或者 equal 等于
neq 或者notequal 不等于
gt 大于
egt 大于等于
lt 小于
elt 小于等于
heq 恒等于
nheq 不恒等于
9.__initialize()
ThinkPHP中的__initialize()的出现只是方便程序员在写子类的时候避免频繁的使用parent::__construct(),同时正确的调用框架内父类的构造器,所以,我们在ThnikPHP中初始化子类的时候要用__initialize(),而不用__construct()
项目注意事项:
1.时间格式化输出:
{$vo.time|date="Y-m-d H:i:s",###}
2.分页(数据采用get方式传值):
①.导入分页类 import('ORG.Util.Page')
②.$count计算条数:->count()
③.加入限制变量:->limit($Page->firstRow.','.$Page->listRows)->select()
3.连贯操作:
M()->field("re.reason_desc,log.ts,w.email,w.nickname,log.to_user,log.remark")
//所要获得的字段
->table(array("wiclickcms_devownship_log"=>"log"))
//要操作的数据表
->join("wiclickcms_admin w on log.from_user=w.aid")
->join("wiclickcms_change_reason re on log.reason=re.reason_id")
//关联其他表
->where("log.dev_id = ".$dev_id)
//查询条件
->order("log.ts desc")
//排序
->limit($page->firstRow,$page->listRows)
//限制条数
->select();
4.搜索条件:
①$condition['dev_id']=$dev_id;
$condition['nickname']=array('like','%'.$skey.'%');
②->where($condition)
5.sql别名:
①如果搜出来的列名相同 可以给该冲突列取别名:as 或者" "(空格);
②如果一次查询搜索条件用到同一张表 可以给该冲突的表取不同的别名:as 或者" "(空格);
demo:
//f 和 t 均为wiclickcms_admin的别名
//log 为wiclickcms_devownship_log的别名
//re 为 wiclickcms_change_reason的别名
$where = "re.reason_desc like'$option' and f.nickname like '$f_user' and t.nickname like '$t_user' and log.dev_id='$dev_id'and log.ts >= '$firstTime' and log.ts <='$endTime'";
M()->field('f.nickname as f_name,t.nickname as t_name,log.ts,f.email as f_email,t.email as t_email,log.remark,re.reason_desc')
->table(array("wiclickcms_devownship_log"=>"log"))
->join("wiclickcms_admin f on log.from_user=f.aid ")
->join("wiclickcms_admin t on log.to_user=t.aid ")
->join("wiclickcms_change_reason re on log.reason=re.reason_id ")
->where($where)->count();
在这个demo中,f.nickname 和t.nickname 若不加区分则是同一个列,f和t是同一个表,若不加区分则会报错!
6.通配符"%":
上面那个例子:
$option 改为 %$option% 则当$option 为空时会匹配任意字符对搜索结果没有影响--即不管是否为空。
ps:在作匹配时,至少加上一个 % 才行,并结合like 模糊查询。
7.and 和 or 运算符:
还是上面那个例子:
有六个条件 显然所有条件都要成立 所以用and 连接