好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

CURD和关联操作 - Thinkphp

CURD和关联操作

1、简单查询

$user =M( 'user' );  //查询一条信息,返回一维数组   $list = $user ->find();  //查询所有信息,返回二维数组select或者findAll()   $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( 'user' );            if ( $vo = $user ->create()){                //$user->password=md5($user->password);                 if ( $user ->save()){                    $this ->success( '更新成功' );               } else {                    $this ->error( '更新失败' );                   }           }       } 

$vo为影响的行数,即更新了多少行,其它方法诸如setInc(通常是数字的字段来进行操作),第一个写字段,第二个写条件,第三个写需要增加整数:

setDec就是进行减的操作

setField单条记录定向修改

$user->where('id=1')->setField(array('username','password'),array('google','baidu'));

4、添加数据 add()

$user =M( 'user' );  $data [ 'password' ]= 'aaaa' ;  $list = $user ->data( $data )->add();   

$list为插入后的主键值,或者用createg来添加:

function  addit(){        $user =M( 'user' );        $vo = $user ->create();        $user ->add();           } 

表单post过来的值经过create方法以数组的形式压缩到了$vo中

5、删除数据 delete()

function  del(){      $user =M( 'user' );      $list = $user -> delete (25);     dump( $list );       }  //或者   function  del(){      $user =M( 'user' );      $list = $user ->where( 'id>5' )-> delete ();     dump( $list );       } 

查看更多关于CURD和关联操作 - Thinkphp的详细内容...

  阅读:74次