Thinkphp6.0 数据库的数据查询

2023-07-07  本文已影响0人  angelwgh

一、 单条数据查询

  DB:table('oc_user')->where('id', 27)->find();
   // sql语句: SELECT * FROM `oc_user` WHERE `id` = 27 LIMIT 1
   // findOrFail方法,当这条数据不存在时,抛出一个error
  DB:table('oc_user')->where('id', 127)->findOrFail();
 
  // findOrEmpty方法,当这条数据不存在时,返回一个空数组[]
  DB:table('oc_user')->where('id', 127)->findOrEmpty();

  1. DB:table()中的table必须制定完整数据表(包括前缀)
  2. where用来指定条件
  3. DB::getLastSql(); 获取最后一条SQL语句

二、 数据集查询

   DB:table('oc_user')->select();
   // SELECT * FROM `oc_user`
    // 转化为数组
   DB:table('oc_user')->select()->toArray();
   //用name方法省略前缀
   DB::name('user')->select();
  1. 查不到数据时 ,用selectOrFail方法抛出异常
  2. 使用select()方法后再调用toArray()方法可以将数据集对象转化为数组
  3. 当在数据库配置文件中配设置了前缀,可以使用name方法忽略前缀

二、 其他查询

  1. 通过 value方法,可以查询指定字段的值(单个),没有数据返回null
Db::table('oc_user')->where('id',1)->value('username');
  1. 通过colunm()方法,可以查询指定列的值(多个),没有数据返回空数组
Db::table('oc_user')->column('username')

// 可以指定`id`作为列值的索引
Db::table('oc_user')->column('username', 'id')

  1. 数据量过大时,使用chunk()方法分批处理数据
      //每次处理3条数据
      Db::name('user')->chunk(3, function ($users) {
            dump($users);
        });
  1. 游标查询,每次查询只读取一条,在读取时,自动定位到下一行继续读取
    $cursor = Db::name('user')->cursor();
    foreach($cursor as $user){
        dump($user);
    }
上一篇下一篇

猜你喜欢

热点阅读