ThinkPHP之增删改查之连贯操作

1.使用sql语句

2.连贯操作方法

select()方法要放在最后一个,其他方法没有先后顺序之分

2.1 连贯方法之alias

alias用于设置当前数据表的别名,便于使用其他的连贯操作例如join方法
具体参考http://document.thinkphp.cn/manual_3_2.html#alias

$Model = M('User');
$Model->alias('a')->join('__DEPT__ b ON b.user_id= a.id')->select();

2.2 连贯方法之join

具体参考http://document.thinkphp.cn/manual_3_2/join.html
join方法可以支持以上四种类型
LEFT JOIN / RIGHT JOIN / FULL JOIN/ INNER JOIN(默认)
join方法支持多次调用,支持给表起别名
WORKCARD在最终解析的时候会转换为 think_work和 think_card

$Model = M('Artist');
$model->alias('artist')
->join("LEFT JOIN __WORK__ work ON artist.id = work.artist_id")
->join("LEFT JOIN __CARD_ card ON artist.card_id = card.id")
->select();

2.3 连贯方法之field

具体参考http://document.thinkphp.cn/manual_3_2.html#field
标识要返回(查询)或者操作(写入)的字段,可以用于查询和写入操作
所有的查询方法,包括find等都可以使用field方法
指定字段

 $User = M("User"); // 实例化User对象
 $field = "id,title,content";
 $User ->field( $field)->select();

给字段设置别名

 $User = M("User"); // 实例化User对象
 $field = "id,nickname as name";
 $User ->field( $field)->select();

使用SQL函数

 $User = M("User"); // 实例化User对象
 $field = "id,SUM(score)";
 $User ->field( $field)->select();

数组方式

 $User = M("User"); // 实例化User对象
 $field = array('id','title','content');
 $User ->field( $field)->select();

数组方式之设置别名

 $User = M("User"); // 实例化User对象
 $field = array('id','nickname'=>'name');
 $User ->field( $field)->select();

获取所有字段

$Model->select();
$Model->field()->select();
$Model->field('*')->select();
$Model->field(true)->select();

字段排除

//获取除了user_id,content之外的所有字段
$Model->field('user_id,content',true)->select();
//或者用
$Model->field(array('user_id','content'),true)->select();

2.4连贯方法之where

具体参考http://document.thinkphp.cn/manual_3_2.html#where
字符串条件

$User = M("User"); // 实例化User对象
$User->where('type=1 AND status=1')->select();

生成的sql语句是

SELECT * FROM think_user WHERE type=1 AND status=1

数组条件
数组条件之普通查询

$User = M("User"); // 第一步:实例化User对象
$map['name'] = 'thinkphp';//第二步:设置查询条件
$map['status'] = 1;
$User->where($map)->select();// 第三步:把查询条件传入查询方法

最后生成的sql语句是:

SELECT * FROM think_user WHERE `name`='thinkphp' AND status=1

数组条件之表达式查询

$map['字段1']  = array('表达式','查询条件1');
//例如
$User = M("User"); // 第一步:实例化User对象
$map= array(); //第二步:设置查询条件
$map['name'] = array('like', '%'.(string)$name.'%');  //模糊查询  
$map['age'] = array('egt', $age);  //大于等于  
$map['sex'] = array('eq', $sex);  //等于   
$map['addtime'] = array('lt', $enddate);     //小于
$User->where($map)->select();// 第三步:把查询条件传入查询方法      

最后生成的sql语句是:

SELECT * FROM think_user WHERE `name` LIKE '%?%' AND `age` >= '?' AND `sex` ='?' AND addtime <= '?'  

怎么输出sql

$model = M("StockIn");
$field = "t.*,m1.truename as addname,m2.truename as updatename";
//列表list 集合
$list = $model->alias('t')->where("t.id= 8 ")->field($field)->select();

$sql = $model->getLastSql(); //输出sql 调试用
echo($sql);
posted on 2017-04-11 11:12  dreamstar  阅读(72)  评论(0编辑  收藏  举报