字段别名
可以在查询的字段里面使用别名,例如
以MySQL为例,我们可以使用
$User->where(’status=1′)
->field(’id,email,username as `name`’)
->limit(10)
->findAll();
可以生成下面的SQL语句
Select id,email,username as `name` from think_user limit 10 where 1
注意在mysql下面一定在自己添加`符 号,否则会自动添加`符号导致不正常。
使用JOIN
假如有二个表,第一个表为Comment表,第二个表为Reply表,现在做一个左连接,MYSQL上测试语句为:
select a.*,b.* from comment a left join reply b on a.id=b.cid
那么可以使用下面的方式来写查询
$Blog->table(’comment a’)
->join(’reply b on a.id=b.cid’)
->field(’a.*,b.*’)
->order(’id desc’)
->limit(’8′)
->findall();
$Blog->table(’comment a’)
->join(’reply b on a.id=b.cid’)
->field(’a.id,a.name,a.subject,b.category’)
->order(’id desc’)
->limit(’8′)
->findall();
如果有更多的JOIN表,还可以支持通过数组参数传入join方式
$Model->table(’table a’)
->join(array(’table1 b on b.id=a.cid’,'table2 c on c.id=b.uid’))
->findall();
或者使用连贯操作中的多个join方法
$Model->table(’table a’)
->join(’table1 b on b.id=a.cid’)
->join(’table2 c on c.id=b.uid’)
->findall();
需要注意的是数组的方法和原来的方式有差别,原来的数组第一个元素是JOIN的类型,现在类型统一放到字符串表达式里面了。如果没有指定JOIN类 型默认仍然是LEFT JOIN 如果需要使用其他的JOIN方式,可以使用下面的方式
$Model->table(’table a’)
->join(’table1 b on b.id=a.cid’)
->join(’right join table2 c on c.id=b.uid’)
->findall();