ThinkPHP框架 _ 学习11
【各种查询条件设置】
$obj = D(); 创建对象 *:这里没有指定具体的参数,所以在访问的时候是可以选择数据表来进行操作的
$obj -> select(); 查询数据
select 字段,字段 from 表名 where 条件 group 字段 having 条件 order 排序 limit 限制条数;
SELECT%DISTINCT%%FIELD%FROM %TABLE%%JOIN%%WHERE%%GROUP%%HAVING%%ORDER%%LIMIT% %UNION%%COMMENT%
$obj -> field(字段,字段); 查询指定字段
$obj -> table(数据表); 设置具体操作数据表
$obj -> where(参数); 参数就是正常sql语句where后边的条件信息
例如:( “goods_price >100 and goods_name like ‘三%’”)
$obj -> group(字段); 根据字段进行分组查询
$obj -> having(参数条件); having 条件设置
$obj -> order(‘price desc/asc’) 排序查询
$obj -> limit([偏移量,]条数) 限制查询的条数
*这些方法的返回值都是$this,所以是可以进行连贯的操作的,不需要 一一执行;
另外,在执行这些操作的语句的时候,需要创建一个对象来接收数据($info)
sql语句里边具体的条件设置在tp框架model模型里边体现为具体的方法操作
以上方法理论上是父类Model的对应方法
父类model具体存在方法: field() where() limit()
还有一些方法在__call()自动调用函数里边: table() group() order() having()
在__call()魔术方法里边会判断当前的执行方法是否是一个method属性的元素信息,如果存在就会执行执行
以上多个方法是同时使用多个进行条件显示(并且没有顺序要求)
$obj -> limit(5)->field(‘id,name’)->order(‘price asc’) -> table(‘sw_goods’)->select();
以上许多方法执行没有顺序要求,许多方法执行后都是把具体的参数赋予到model属性options里边,最后根据options拼装sql语句。
select()原理的追踪
总结:
- config.php做数据库连接配置convertion.php
- 制作model模型文件
- 实例化model模型对象
a) new 命名空间\类名
b) D([模型标志]);
c) M([模型标志]);
- 数据查询select()
- 各种查询条件设置方法
- smarty模板引擎切换(Behavior行为里边的配置变量)
补充:
看到好多ecshop的模板文件中 都有{literal}{/literal} 标签的影子,该标签一般都是把js 包含起来,一直不知道是什么作用,或者这样写有什么含义。找了半天才现在,他的真真作用,还是学习不到位啊。
literal 标签是在smarty中的存在的,这就能理解为什么会出现在ecshop中了。smarty会把所有的{}都当成是自己的程序,我们在js中如果想定义一个函数的话就会用到{} 。smarty一编译就把js中定义函数的{}当做自己的东西来编译。这样就可能出现问题了。为了解决这个问题,于是诞生了{literal}标签。
也可以这样理解:iteral 标签区域内的数据将被当作文本处理,此时模板将忽略其内部的所有字符信息. 该特性用于显示有可能包含大括号等字符信息的 javascript 脚本. 当这些信息处于 {literal}{/literal} 标签中时,模板引擎将不分析它们,而直接显示.(转)
转载于:https://www.cnblogs.com/zhengweizhao/p/6737660.html
ThinkPHP框架 _ 学习11相关推荐
- ThinkPHP框架 _ 学习3
[路由解析] 通过url地址get参数找到指定的控制器,并进行对应方法调用请求 http://网址/index.php?m=模块名称&c=控制器&a=方法 以上url地址信息代码不够优 ...
- ThinkPHP框架 _ 学习5
[视图模板与项目进行整合] 引入静态代码 引入css.image.js a) 以上3样东西,浏览器需要发送单独的http请求 b) 引入css的时候,以User控制器标志作为当前目录,显然不行 以上目 ...
- ALSA声卡08_从零编写之框架_学习笔记
1.整体框架 (1)图示((DAI(全称Digital Audio Interface)接口)) 在嵌入式系统里面,声卡驱动是ASOC,是在ALSA驱动上封装的一层,包括以下三大块 (2)程序框架 m ...
- Scrapy框架的学习(11.scrapy框架中的下载中间件的使用(DownloaderMiddlewares))
1.Downloader Middlewares (下载中间键):引擎会先把Requets对象交给下载中间键再然后交给Downloader 2.使用方法: (1) 编写一个Downloader Mid ...
- php学习(三):近几年来,不断发展的ThinkPhp框架(TP6)
1.thinkPhp安装 6.0版本开始,必须通过compose方式下载安装和更新.(3.2 和 5.0) MVC是一种架构模式 软件系统分为三个基本部分:模型(Model).视图(View).控制器 ...
- 深度学习框架tensorflow学习与应用——代码笔记11(未完成)
11-1 第十周作业-验证码识别(未完成) #!/usr/bin/env python # coding: utf-8# In[1]:import os import tensorflow as tf ...
- thinkphp 微信服务器验证代码_【表哥有话说 第27期】ThinkPHP框架漏洞梳理
0x00. 前言 ThinkPHP被认为是PHP入门级框架.作为菜鸡的我,据破神经验,寒假打算系统学习一下ThinkPHP框架开发及梳理其安全问题.恰逢契机,写篇文章梳理一下ThinkPHP. 因为是 ...
- java ee中ssh学后感_学习SSH,SSM框架有感
JSP/Servlet基础 许多同学学习框架的时候,往往会忽视这部分内容,有的甚至没学JSP直接学习了框架,导致基础知识不扎实,只是会用框架,最后连JSP一共有几个内置对象都不知道.自己当时学的时候也 ...
- 数字货币综合虚拟货币交易平台源码(基于thinkphp框架)中英文切换适合学习研究 二开
源码简介: 数字货币合约交易源码,综合虚拟货币交易平台源码(基于thinkphp框架)中英文切换 支pc+h5 持委托交易,买卖交易市场等等功能 这个框架适合二开 好多比较好一点的交易所都是基于这个二 ...
最新文章
- BP神经网络公式推导及实现(MNIST)
- 炼个BERT别人花几分钟你花了快1天?谷歌:我这是4810亿参数的巨型BERT
- Grafana中多租户设置
- Ubuntu使用tzselect修改时区
- Android学习笔记篇1. 从按钮的点击事件开始
- Supervisor 守护 dotnetcore 程序
- 2012年4月18日 新的开始
- git pull 失败 ,提示:fatal: refusing to merge unrelated histories
- Python - 进程/线程相关整理
- 关于cad2010的激活
- nginx配置错误页面
- python期权价格计算器_使用Python自带GUI tkinter编写一个期权价格计算器
- 小米笔试题 风口的猪-中国牛市
- 深入理解Java虚拟机——Parallel Old收集器
- 通过hover显示子元素
- Framer X for Mac(交互设计工具)
- Python ffmpeg视频压缩
- Python中 list[:]与 list 的区别
- 移动边缘计算(MEC)促进5G发展的分析
- 海思平台ISP的ae的简介
热门文章
- QT 异步函数和同步函数交换问题
- Android入门学习4
- android——根据MVC框架设计的结构
- [Android开发]zip文件压缩解压缩
- Truncate Table 删除表内容避免产生过多日志
- Linux环境下查看CPU资源的命令
- [Java] 蓝桥杯BASIC-16 基础练习 分解质因数
- 2019武汉大学计算机学院拟录取,武汉大学2019年招收攻读硕士研究生复试成绩拟录取名单...
- opencv 的norm_OpenCV学习笔记(一)之图像金字塔-上采样与降采样与DOG
- Mysql like ' ' 会不会用到索引