ThinkPHP--CURD操作

一、创建数据

1、在数据库添加等操作前,首先需要对数据进行创建(也就是接受提交过了的数据,比如表单的POST),接收数据后才可以对其进行验证、完成、生产等工作。也就是说,创建数据并不会马上在数据库生成数据。
比如:

$user  = M('User');
var_dump($user->create());

这的create()方法就是数据创建,数据创建的结果是提交的POST数据的键值对。
注意:提交过来的字段和数据表字段必须对应,否则无法解析。

默认是以POST方式发送,若想以GET方式传递,则先在要传递的表单改方式为GET,然后:

var_dump($user->create($_GET));//传递方式改为GET即可

即可

2、create()方法的内部工作分为9步:

1)获取数据源(默认是POST方式);
2)验证数据合法性(非数据或对象会过滤),失败则返回false;
3)检查字段映射;
4)判断数据状态(新增还是修改);
5)数据自动验证,失败返回false;
6)表单令牌验证,失败返回false;
7)表单数据赋值(过滤非法字段和字符串处理);
8)数据自动完成;
9)生成数据对象(保存在内存)。

3、create()方法可以使用连贯操作配合数据创建,支持的连贯操作有:

1)field---用于定义合法字段(限制接收字段);
2)validate---用于数据自动验证;
3)auto---用于数据自动完成;
4)token---用于令牌验证。

二、添加数据

1、案例如下:
比如已有控制器为UserController.class.php,则测试代码为:

public function add(){
            $user = M('User');
            $data['user'] = 'hhh';
            $data['email'] = 'test@test.com';
            $data['date'] = date('Y-m-d H:i:s');
            $user->add($data);
        }

add()方法将会执行添加操作。

2、 结合create()方法:

public function add(){
            $user = M('User');
            $data = $user->create();
            $data['date'] = date('Y-m-d H:i:s');
            $user->add($data);
        }

3、add()方法支持的连贯操作有:

1)table---定义数据表名称;
2)data---指定要写入的数据对象;
3)field---定义要写入的字段;
4)relation---关联查询;
5)validate---数据自动验证;
6)auto---数据自动完成;
7)filter---数据过滤;
8)scope*---命名范围;
9)bind---数据绑定操作;
10)token---令牌验证;
11)comment---SQL注释。

三、读取数据

1、比如有select()方法,它支持的连贯方法有:

    1)where---查询或更新条件;
    2)table---要操作的数据表名称;
    3)alias---数据表别名;
    4)field---查询字段;
    5)order---结果排序;
    6)group---查询分组;
    7)having---分组再查询;
    8)jion---多表链接查询;
    9)union---合并SELECT查询;
    10)distinct---取唯一值;
    11)lock---锁。

2、 find()方法,筛选一条数据(默认显示第一条数据)。
select()方法,默认显示所有数据。

//获取第一条user字段的值
$user = M('User');
var_dump($user->getField('user'));
//获取所有user字段的值
$user = M('User');
var_dump($user->getField('user',true));
//传递多个字段,获取所有,重复的会自动被屏蔽
$user = M('User');
var_dump($user->getField('user,email'));
//ID冒号分离
$user = M('User');
var_dump($user->getField('id,user,email',':'));
//限制2条数据
$user = M('User');
var_dump($user->getField('id,user,email',2));

3、结合create()

$user = M('User');         //POST必须包含主键
$user->create();
$user->save();

修改某一个值

$user = M('User');
$map['id'] = 1;
$user->where($map)->setField('user','某某某');

统计累计,累加累减

$user = M('User');
$map['id'] = 1;
$user->where($map)->setInc('count',1); //;累加,setDec是累减

四、删除数据

1、数据删除使用的方法是delete()方法。

直接删除主键

$user = M('User');
$user->delete(17);

根据ID来删除

$user = M('User');
$map['id'] = 16;
$user->where($map)->delete();

批量删除多个

$user = M('User');
$user->delete('1,3,5');

删除count为0且按时间倒序的前五个

$user = M('User');
$map['count'] = 0;
$user->where($map)->order(array('date'=>'DESC'))->limit(5)->delete();

delete()支持的连贯操作有:

1)where---查询或更新条件;
2)table---要操作的数据表名称;
3)alias---数据表别名;
4)order---结果排序;
5)lock---锁;
6)relation---关联查询;
7)scope---命名范围;
8)bind---数据绑定操作;
9)comment---SQL注释。

五、ActiveRecord(AR)模式

这种模式最大的特点就是简化了CURD操作,并且采用对象化的操作方式,便于使用和理解。

添加一条数据

$user = M('User');
$user->user = 'huoying';
$user->email = 'huoying@qq.com';
$user->date = date('Y-m-d H:i:s');
$user->add();

结合create

$user = M('User');
$user->create();
$user->date = date('Y-m-d H:i:s');
$user->add();

找到主键为4的值

$user = M('User');
var_dump($user->find(4));

查找user=某某某的记录

$user = M('User');
var_dump($user->getByUser('某某某'));

输出user

echo $user->user;

通过主键查询多个

$user = M('User');
var_dump($user->select('1,2,3'));

修改一条数据

$user = M('User');
$user->find(1);
$user->user = '某某2';
$user->save();

删除当前找到的数据

$user = M('User');
$user->find(11);
$user->delete();

删除主键为10的数据

$user = M('User');
$user->delete(10);

六、字段映射

字段映射可以将表单里的name名称对应到数据表里的字段,这样防止系统自动屏蔽掉不对应的POST值。

1、字段限制

//本方法可以写到一个model内,然后通过D方法调用。
protected $_map = array(
//  '表单内name名称'=>'数据表内字段名称'
    'xingxing'=>'user',
    'youxing'=>'email',
);

2、字段映射获取

$user = D('User');
var_dump($user->create());
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值