一、连贯操作实现原理代码演示
<?php
header('Content-Type:text/html;charset=utf-8');//编码问题
/**
* 连贯操作演示
*/
class Model{
private $tabNmae = null;
private $sql;
private $where;
function __construct($tabNmae){
$this->tabNmae = $tabNmae;
mysql_connect('127.0.0.1','root','rootroot') or die("数据库链接错误");
mysql_select_db('testTP');
}
function where($_where){
$this->where = $_where;
return $this;
}
function select(){
$arr=array();
$this->sql="select * from tt_".strtolower($this->tabNmae)." where $this->where";
$result=mysql_query($this->sql);
if ($result&&mysql_num_rows($result)>0) {
while ($res = mysql_fetch_assoc($result)) {
$arr[] = $res;
}
}
return $arr;
}
function getSql(){
return $this->sql;
}
}
$m = new Model('User');
$arr = $m->where('id>4')->select();
var_dump($arr);
echo "<hr/>";
echo $m->getSql();
}
二、常用连贯操作
可以多个函数连贯操作且不区分顺序,但最后一定要已select()、find()等函数结尾
1.where:帮助我们查询条件
2.order:对结果进行排序
$arr = $m->order('id desc')->select();//排序 desc降序 asc升序(默认)
//SELECT * FROM `tt_user` ORDER BY id desc
$arr = $m->order(array('id'=>'desc','money'=>'desc'))->select();
//SELECT * FROM `tt_user` ORDER BY `id` desc,`money` desc
3.limit:限制结果数量
limit(2,5);
limit('2,5');
limit(10);//取出10条数据
$arr = $m->order(array('id'=>'desc'))->limit(3,3)->select();//从第3条数据取出3条
//SELECT * FROM `tt_user` ORDER BY `id` desc LIMIT 3
4.field:设置查询字段
$arr = $m->field('user_name as name,id')->select();
$arr = $m->field(array('user_name'=>'name',id))->select();
//SELECT `user_name` AS `user`,`id` FROM `tt_user`
$arr = $m->field('id',true)->select();//获取除了id以外的字段
5.table:设置表名
6.group:分组
7.having:跟分组有关的
三、补充(了解即可)
alias用于给当前数据定义别名 字符串
page 用于查询分页(内部会转成limit)字符串和数字
join* 用于查询join支持 字符串和数组
union* 用于查询union支持字符串、数组和对象
distinct 用于查询的distinct支持布尔值
lock 用于数据库的锁机制 布尔值
cache 用于查询缓存 支持多个参数(以后在缓存部分在详细描述)
relation 用于关联查询(需要关联模型扩展支持)字符串
validate 用于数据自动检验 数组
auto 用于数据自动完成 数组
filter 用于数据过滤 字符串
ceope* 用于命名范围 字符串、数组