thinkphp中curd的一些操作
一:增加数据
$user = M("User");
$data['name'] = 'ThinkPHP';
$data['email'] = 'lcxoooo@163.com';
$user->add($data);或者使用data方法连贯操作:$user->data($data)->add();
如果在add之前已经创建数据对象的话(例如使用了create或者data方法),add方法就不需要再传入数据了
一:更新数据,使用save,并且支持连贯操作的使用
$user = M("User");
$data['name'] = 'ThinkPHP';
$data['email'] = 'lcxoooo@163.com';
$user->where('id=5')->save($data);或者用
$user->where('id=5')->data($data)->save();
或者使用:
$user = M("User");
setField同时支持更新多个字段,只需传入数组即可
$user->where('id=5')->setField(array('name','email'),array('ThinkPHP','lcxoooo@163.com'));
$user = M('User');
$data['id'] = 5;
$data['name'] = 'ThinkPHP';
$data['email'] = 'lcxoooo@163.com';
$user->save($data);
如果id是数据表的主键的话,系统自动会把主键的值作为更新条件来更新其他字段的值
某个字段在原有的基础上增加减少
$user = M("User");
$user->setInc('score','id=5',3); //用户的积分增加3
$user->setInc('score','id=5');//用户的积分增加1
$user->setDec('score','id=5',5);//用户的积分减少5
$user->setDec('score','id=5');//用户的积分减少1
二:读取数据:
$user = M("User");
$user->where('status = 1')->order('create_time')->limit(10)->select();
select方法返回的是一个二维数组,如果没有查到任何结果的话,也是返回一个空的数组
$user = M("User");
$user->where('status = 1 AND name="think"')->find();
find方法只会返回第一条记录
$List &#61; $Dao->where(&#39;uid<10 AND email&#61;"find">Jack&#64;163.com"&#39;)->find();和下边的数组方式执行效果是一样的
数组方式
$user &#61; M("User");
// 构建查询数组
$condition[&#39;uid&#39;] &#61; array(&#39;elt&#39;,10);
$condition[&#39;email&#39;] &#61; "lcxoooo&#64;163.com";
$List &#61; $user->where($condition)->find();
使用对象
$user &#61; M("User");
// 定义查询条件
$condition &#61; new stdClass();
$condition->uid &#61; array(&#39;elt&#39;,10);
$condition->email &#61; "lcxoooo&#64;163.com";
$List &#61; $user->where($condition)->find();
使用对象方式和使用数组方式的条件效果是相同的&#xff0c;并且是可以互换的。
LIMIT 限制
在查询中使用 LIMIT 限定数据返回的记录数&#xff1a;
// 查询数据
$list &#61; $user->limit(&#39;4,5&#39;)->select();
这个例子就是将第 5-10 条记录取出&#xff0c;limit() 方法内的参数意义跟 SQL 语句中的 LIMIT 完全一致。
连贯操作
ThinkPHP 中允许将数据对象中的各个方法写在一起操作&#xff0c;如&#xff1a;
$list &#61; $Dao->order(&#39;uid DESC&#39;)->limit(&#39;4,5&#39;)->select();
读取某个字段的值&#xff0c;可以使用getField方法
$user &#61; M("User");
$user->where(&#39;id&#61;3&#39;)->getField(&#39;nickname&#39;);该查询结果返回的是一个单独的变量即值不是数组
如果传入两个个字段&#xff0c;则返回一个关联数组
$list &#61; $user->getField(&#39;id&#39;,&#39;nickname&#39;);
返回的list是一个数组&#xff0c;键名是用户的id&#xff0c;键值是用户的昵称nickname
如果传入三个即以上
mixed getField( string fields, mixed condition, string spea)
fields 必须&#xff0c;需要查询的字段名称&#xff0c;可以是一个或多个字段
condition 可选&#xff0c;查询条件&#xff0c;可以是字符或数组&#xff0c;参考 select 方法查询条件
spea 可选&#xff0c;多个字段数据生成关联数组时&#xff0c;数据间隔符号&#xff0c;默认为空格
eg&#xff1a;
    public function select(){
    header("Content-Type:text/html; charset&#61;utf-8");
    $Dao &#61; M("User");
    $list &#61; $Dao->getField(&#39;uid,username,email&#39;,&#39;uid <4&#39;,&#39;|&#39;);
    dump($list);
}
array(3) {
  [1] &#61;> string(21) "admin|admin&#64;5idev.com"
  [2] &#61;> string(23) "小明|xiaoming&#64;163.com"
  [3] &#61;> string(19) "Jack|jack&#64;gmail.com"
}
ThinkPHP getBy动态查询
public function chekUser(){
    header("Content-Type:text/html; charset&#61;utf-8");
    $Dao &#61; M("User");
// 查询数据
    $user &#61; $Dao->getByUsername(&#39;Admin&#39;);
if($list){
        echo &#39;用户名存在&#39;;
    }else{
        echo &#39;用户名不存在&#39;;
    }
}
方法中传入的参数是查询的字段对应的值&#xff0c;上面例子执行的 SQL 语句为&#xff1a;
SELECT * FROM user WHERE username &#61; &#39;Admin&#39; LIMIT 1
请注意&#xff0c;在getBy之后紧跟着的字段名称&#xff0c;首字母必须大写。对于如 user_name 这样的字段名称&#xff0c;以驼峰法自动识别下划线&#xff0c;即&#xff1a;
$user &#61; $Dao->getByUserName(&#39;Admin&#39;);
实际使用中可以灵活根据查询的字段名来定义 getBy 放入&#xff0c;如&#xff1a;getByEmail、getByTitle、getById 等。

三&#xff1a;删除操作

$user &#61; M("User");
删除所有状态为0的5个用户数据&#xff0c;按照创建时间排序
$user->where(&#39;status&#61;0&#39;)->order(&#39;create_time&#39;)->limit(&#39;5&#39;)->delete();
$user->where(&#39;id&#61;5&#39;)->delete(); //删除id为5的用户数据