一丶CURD常用操作
注意:
在视图内输出数据的时候尽量使用self属性,这样会让你的网页更快,更迅速
self::$data['list'] = $list;
模板输出变量 $this->assign('重定义名',self::$data);
输出模板 $this->display('视图');
大多数组合查询select()条件都在最后
读取数据的时候尽量使用遍历数组的形式不要使用遍历对象的方式。大多数情况下,数组比对象运行的快。也更好的操作
1.常用查询类
实例化thinkPHP的model
$user = new Model('模型名','表前缀','数据库连接信息');
//$user = new Model('User');对应的新建一个model命名为(UserModel.class.php);里面声明操作那张表
<1.获取全部数据
$user->select();//相当于select * from user;
<2.查询指定字段
$user->field('username,password')->select();
<3.使用查询条件
$where['username'] = 'gaofei';
$user->where($where)->select();//也可使用$user->where('UId=1 AND username=12321')->select();
<4.排序
$user->order('UId DESC')->select();
<5.limit限制
$user->limit(4,5)->select();
<6.连贯操作
$user->field('username,password')->where('UId != 1')->order('UId ASC')->limit(3,5)->select();
2.find方法 查询一条数据记录
<1.find() 方法是和 select() 用法类似的一个方法,不同之处 find() 查询出来的始终只有一条数据,即系统自动加上了 LIMIT 1 限制。
$where['user'] = 'gf';
$where['password'] = md5(123);
$user->where($where)->find();
3.getBy动态查询 ThinkPHP getBy动态查询是一个魔术方法,可以根据某个字段名称动态得到对应的一条数据记录。
$user->getByusername('gf');//执行的sql为 SELECT * FROM tb_name WHERE username='gf';
4.统计查询
<1.在应用中我们经常会用到一些统计数据,例如当前所有(或者满足某些条件)的用户数、所有用户的最大积分、学生的平均成绩等等,ThinkPHP 为这些统计操作提供了一系列的内置方法:
$user->where('UId=1')->count();//SELECT COUNT(*) FROM TB_NAME WHERE UId='1';
<2.max() 方法用于统计某个字段最大数据。
$user->max('username');//SELECT MAX(username) AS tb_max FROM TB_NAME;
<3.avg() 统计某个字段平均数据。
$user->avg('score');//SELECT AVG(score) FROM TB_NAME LIMIT 1;
<4.sum()统计某字段数据之和
$user->order('score DESC')->limit(10)->sum('score');//SELECT SUM(SCORE) AS tb_sum FROM tb_name ORDER BY score DESC LIMIT 10;
5.原生sql查询
<1.query():用于 SQL 查询操作,并返回符合查询条件的数据集
$sql = 'SELECT * FROM tb_name';
$user->query($sql);
<2.execute():更新和写入数据的 SQL 操作,返回影响的记录数
$sql = "UPDATE tb_name SET email='',password='' WHERE UId='123'";
$user->execute($sql);
二丶联合查询
think中关于多表查询,原生sql用的较多。
1.原生查询。
$sql = "SELECT * FROM tb1 inner join tb2 on tb1.userid=tb2.userid";
$user->query($sql);
2.join()两表查询
$user->join('t1 ON artist.id = t1.artist_id')->join('t2 ON artist.card_id = t2.id')->select();
3.table()多表查询
$user->field('user.name,role.title')->table(array('think_user'=>'user','think_role'=>'role'))->limit(10)->select();
三丶写入数据
1.add() 方法用于向数据表添加数据,相当于 SQL 中的 INSERT INTO 行为。返回受影响ID
$addArr = array(
'username' => 'gf',
'password' => '123',
'email' => 'heheheh'
);
$id = $user->add($addArr);
//执行语句INSERT INTO tb_name (username,password,email) VALUES('gf','123','hehehe');
四丶更新数据
1.save 方法用于向数据表更新数据,相当于 SQL 中的 UPDATE 行为。
$where['id'] = '1';
$data['username'] = 'gaofei';
$user->where($where)->save($data);//或者$user->where($where)->data($data)->save();
//执行语句
UPDATE tb_name SET username = 'gaofei' WHERE id=1;
五丶删除数据
1.delete() 方法来删除数据库中的数据记录,并且也支持连贯操作的使用。delete() 方法执行成功返回操作影响(删除)的记录数。
$where['Uid] = 1;
$user->where($where)->delete();
//DELETE FROM tb_name WHERE UId=1;
2.连贯操作删除多个
$user->where('uId=1')->order('uId DSC')->limit(5)->delete();
按照uid升序排序,删除uid为1的五条
上面这样暂时就能解决我们平常基本的添删改查了。