2 Db类:查询操作

知识梳理

1、find(); 查询单条数据
2、select();查询多条数据
3、value('field_name');查询某个字段的值
4、column('列名称','索引名');查询某一列的值
5、cursor();游标查询 减少大量数据查询内存开销
3、name()和table()的区别
4、find()和select()方法之前可以使用所有的链式调用

 

1)find方法 查询单条

//有数据:返回一维关联数组
//没有数据:返回NULL
Db::table(bbs_category)->where('id',1)->find();
//没有数据:返回空数据
Db::table('think_user')->where('id', 1)->findOrEmpty();
//没有数据 抛出异常
Db::table('think_user')->where('id', 1)->findOrFail();
则会抛出一个 think\db\exception\DataNotFoundException

 

2)查询多条

//返回:数据集对象
Db::table('bbs_category')->where('status',0)->select();

//转换为数组
Db::table('bbs_category')->where('status',0)->select()->toArray();

//转换为json
Db::table('bbs_category')->where('status',5)->select()->toJson();
//无结果:抛出异常
Db::table('bbs_category')->where('status',5)->selectOrFail();
抛出一个 think\db\exception\DataNotFoundException 异常

 

 3)一维和二维数组取值

find()方法:返回一维数组
array(3) { ["id"]=> int(82) ["name"]=> string(6) "浙江" ["e_name"]=> string(8) "zhejiang" } //foreach()会输出所有的值 //获取某个字段的值直接echo $array['name'];
select()方法:返回二维数组
foreach
($res as $key=>$val){ var_dump($val['name']); } //必须用foreach循环取值

  

4) 查询某个字段的值

返回字符串 无数据返回 NULL
Db::name('bbs_category')->where('status',0)->value('name');

带索引查询
Db::name('bbs_category')->where('status',0)->value('name','id');//第二参数值是索引

 

5) 查询某一列的值

有数据返回索引数组 无数据返回空数组
Db::name('bbs_category')->where('status',0)->column('name');

根据索引查询 返回id=>name的关联数组
Db::name('bbs_category')->where('status',0)->column('name','id');

返回所有数据 根据id所有查询 返回关联数组
Db::name('bbs_category')->where('status',0)->column('*','id');

 

6)游标查询cursor()

$res = Db::name('bbs_category')->where('status',0)->cursor();
foreach ($res as $val) {
      var_dump($val['name']);
}//利用了PHP生成器的特性 大幅减少查询内存开销

 

posted @ 2020-12-29 16:55  棉花糖88  阅读(432)  评论(0)    收藏  举报