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方法支持多次调用,支持给表起别名
WORK和 CARD在最终解析的时候会转换为 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);