数据库的操作是由模型来管理的,模型类的作用大多数情况是操作数据表的,如果按照系统的规范来命名模型类的话,大多数情况下是可以用模型的名字自动对应数据表的。 模型类的命名规则是除去表前缀的数据表名称,采用驼峰法命名,并且首字母大写,然后加上模型层的名称(默认定义是Model)(看得很懵逼对吧,我也是,上面这段话是百度的,下面实例化要好好看了)
TP提供了快捷实例化模型的API,上面的直接实例化的时候我们需要传入完整的类名,系统提供了一个快捷方法D用于数据模型的实例化操作。 要实例化自定义模型类,可以使用下面的方式:
一、数据写入
向user数据表中写入一条数据
$user = M('user'); //实例化user对象,user是表名
$data['id'] = 5;
$data['username'] = benny;
$user->add('$data');
二、数据查询
1、读取数据集
$user = M('user');
$map['id'] = I('id',0,'int');
//find()方法,读取数据表中的一行数据(或者关联数据)
$data = $user->where(array('id'=>$map['id']))->find(); //array('id'=>$map['id'])等同于$map
dump($data);
find方法查询数据的时候可以配合相关的连贯操作方法,其中最关键的则是where方法。 如果查询出错,find方法返回false,如果查询结果为空返回NULL,查询成功则返回一个关联数组(键值是字段名或者别名)。
读取数据集其实就是获取数据表中的多行记录(以及关联数据),使用select方法
$user = M('user');
//查找select值为1的用户数据,以创建时间排序 ,返回10条数据
$data = $user->where('status = 1')->order('create_time')->limit(10)->select();
如果查询出错,select的返回值是false,如果查询结果为空,则返回NULL,否则返回二维数组。
读取字段值其实就是获取数据表中的某个列的多个或者单个数据,最常用的方法是 getField方法。
$user = M('user');
//获得id为1 的用户的username
$data = $user->where(‘id =1 ’)->getField('username');
2、数据更新
更新数据使用save方法
$user = M('user'); //实例化user对象,user是表名
$data['username'] = benny;
$data['password'] = 123;
$user->where('id = 1 ')->save('$data');//根据条件更新记录
如果只是更新个别字段的值,可以使用setField方法。
$user = M('user');
//更改用户的username
$data = $user->where(‘id =1 ’)->setField('username','benny');
setField方法支持同时更新多个字段,只需要传入数组即可,
$user = M('user');
//更改用户的username 和password
$data = array('username'=>'benny','password'=>'123');
$data = $user->where(‘id =1 ’)->setField($data);
3、数据删除
ThinkPHP删除数据使用delete方法
$user = M('user');
$user->delete(1);
表示删除主键为1的数据,delete方法可以删除单个数据,也可以删除多个数据,这取决于删除条件
delete方法的返回值是删除的记录数,如果返回值是false则表示SQL出错,返回值如果为0表示没有删除任何数据。 也可以用order和limit方法来限制要删除的个数:
$user->where('id = 1')->order('create_time')->limit('5')->delete();
为了避免错删数据,如果没有传入任何条件进行删除操作的话,不会执行删除操作
(原文写于2017.8.16)