作者:谭宏景 | 来源:互联网 | 2014-06-12 18:37
1、简单查询$userM('user');//查询一条信息,返回一维数组$list$user->find();//查询所有信息,返回二维数组select或者findAll()...
1、简单查询
- $user=M('user');
-
- $list=$user->find();
-
- $list=$user->select();
2、查询中的连贯操作
(1)、where方法
- $User->where( 'status=1' )->order( 'create_time' )->limit(10)->select();
- $User->select(array( 'order'=>'create_time', 'where'=>'status=1', 'limit'=>'10' ));
- $User->where( 'id=1' )->field( 'id,name,email' )->find();
- $User->where( 'status=1 and id=1' )->delete();
- $list=$user->where('id>1')->limit('5')->order('id desc')->field('id,username')->select();
(2)、跨表查询$user->table()
- $list=$user->table('aoli_user u,aoli_test t')->where('u.id=t.id')->select();
(3)、$user->data() data方法是可以被替代的,主要在save,add,delete操作的时候使用,保存数据用的
- $Model->data($data)->add();
- $Model->data($data)->where( 'id=3' )->save();
Data 方法的参数支持对象和数组,如果是对象会自动转换成数组,如果不定义 data 方法赋值,也可以使用 create 方法或者手动给数据对象赋值的方式.
(4)、$user->field()
指定查询哪些字段字段,参数可以是字符串field('user.id as uid,m.id as mid '),也可以是数组field(array('user.id'=>'uid','m.id'=>'mid'))
(5)、$user->order()
参数也是既可以是字符串order('id desc')也可以是数组order(array('id'=>'desc','username'))
- $Model->field( 'id,nickname as name' )->select();
- $Model->field(array( 'id','nickname'=>'name' ))->select();
(6)、limit()
有两个参数,第一个指起始位置,第二个参数指定查询多少条.
limit('8') 从第1条开始,查8条
limit('3,8') 从第3条开始,查8条
(7)、page()查询分页
(8)、group()分组
$user->group('')->select()
(9)、having方法,主要用于二次过滤。
(10)、join关联查询,常用的有内关联,左关联,右关联,默认为左关联
(11)、distinct 唯一性过滤
select distinct id ,username from ..
过滤掉重复过滤
$user->distinct(true)->select();
(12)、relation方法 关联模型
(13)、lock 查询锁 lock(true)
3、更新数据 save()
- $user=M('user');
- $data['password']='aaaa';
- $list=$user->where('id=1')->save($data);
-
- $user=M('user');
- $data['password']='aaaa';
- $data['id']='4';
- $list=$user->save($data);
-
- $user=M('user');
- $data['password']='aaaa';
- $data['id']='4';
- $list=$user->data($data)->save();
create来更新数据
create.html:
- <form action="__URL__/addit" method="post">
- <input type="text" name="id" />
- <input type="text" name="username" />
- <input type="password" name="password" />
- <input name="id" type="hidden" value="25" />
- <input type="submit" name="sub" value="提交" />
- form>
UserAction.class.php
- function create(){
- $this->display();
- }
-
- function addit(){
- $user=M(&#39;user&#39;);
- if($vo=$user->create()){
-
- if($user->save()){
- $this->success(&#39;更新成功&#39;);
- }else{
- $this->error(&#39;更新失败&#39;);
- }
- }
- }
$vo为影响的行数,即更新了多少行,其它方法诸如setInc(通常是数字的字段来进行操作),第一个写字段,第二个写条件,第三个写需要增加整数:
$list=$user->setInc(&#39;price&#39;,&#39;id=1&#39;,3);//表示price的字段加3
setDec就是进行减的操作
$list=$user->setDec(&#39;price&#39;,&#39;id=1&#39;,3);//表示price的字段减3
setField单条记录定向修改
$user->where(&#39;id=1&#39;)->setField(array(&#39;username&#39;,&#39;password&#39;),array(&#39;google&#39;,&#39;baidu&#39;));
4、添加数据 add()
- $user=M(&#39;user&#39;);
- $data[&#39;password&#39;]=&#39;aaaa&#39;;
- $list=$user->data($data)->add();
$list为插入后的主键值,或者用createg来添加:
- function addit(){
- $user=M(&#39;user&#39;);
- $vo=$user->create();
- $user->add();
- }
表单post过来的值经过create方法以数组的形式压缩到了$vo中
5、删除数据 delete()
- function del(){
- $user=M(&#39;user&#39;);
- $list=$user->delete(25);
- dump($list);
- }
-
- function del(){
- $user=M(&#39;user&#39;);
- $list=$user->where(&#39;id>5&#39;)->delete();
- dump($list);
- }