//find 单条数据查询
// 查询单条数据
Db::name('user')->where('id', 1)->find();
// 查询单条数据 如果没有数据 抛出error
Db::name('user')->where('id', 1)->findOrFail();
//查询单挑数据 查询单条数据 如果没有数据返回一个空数组
Db::name('user')->where('id', 1)->findOrEmpty();
//select() 查询数据集
//查询多条数据
Db::table("tp_user")->select();
// 查询多条数据 如果查询不到数据 抛出一个异常
Db::table('tp_user')->where('id', 1)->selectOrFail();
// 查询多条数据 将查询到的数据集对象转化为一个数组
Db::table('tp_user')->select()->toArray();
// 如果在配置文件配置了前缀就可以不用加上tp_user 直接使用上name方法代替掉table
Db::name('user')->select();
// 其他查询
//value 查询单个指定字段的值 如果没有查询到返回null
Db::name('user')->where('id', 1)->value('username');
//colunm 可以指定查询列的多个值 没有数据的话 返回空数组
Db::name('user')->colunm('username');
//并且可以将id设置为索引
Db::name('user')->colunm('username', 'id');
// 如果一次性处理的数据太多很容易报错 使用这种方法 每次查询100条 处理完后继续处理下一个100条
Db::name('user')->chunk(3, function($users) {
foreach ($users as $user) {
dump($user);
}
echo 1;
});
//游标查询 节省资源 每次只读一行 等到下一次读取的时候自动读取下一行
$cursor = Db::name('user')->cursor();
foreach ($cursor as $user) {
dump($user);
}
//数据库操作----链式查询 ----------------------------------------------
/*原理: 链式查询就是使用Db::name('user')的时候 会返回一个query查询对象
这个时候就可以使用链式查询进行一系列的操作 比如where条件表达式 还将返回查询对象
不过比如结果查询方法要放到最后 比如 find() select() toArray()等等 因为并不是链式查询方法
*/
// 其他查询
// 如果多次使用数据库查询的话 每次创建都会生成一个实例 浪费资源 所以可以将实例保存下来 重复调用
$userquery = Db::name('user');
$userfind = $userquery->where('id', 1)->find();
$userselect = $userquery->select();
//但是当一个实例对象进行第二次查询的时候 都会保留上一次的值
$data1 = $userquery->order('id', 'desc')->select();
$data2 = $userquery->select();
return Db::getLastSql(); // 返回上一条查询语句
//为了解决这种弊端 所以要使用removeOption 清理掉上一次的值
$userquery->removeOption('where')->select();