您的位置:首页 > 编程语言 > PHP开发

ThinkPHP之增删改查之连贯操作

2017-04-11 11:12 357 查看

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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  thinkphp