admin 发表于 2026-5-28 16:57:08

thinkphp6使用模型操作查询数据库

一、find查单条数据:
1、查单条数主键查询,例如:
User::find(1)//这里使用ID=1是主键2、单条数据条件(查询构造器)查询,例如:
User::where('mobile', '13000000000')->find();3、为了防止查询的数据不存在返回null,我们可以使用:
a、主键查询示例代码:
User::findOrEmpty(1);b、条件查询示例代码:
User::where('mobile', '13000000000')->findOrEmpty();假设我们前面的查询都是赋值给了$user,那么我们使用$user->name就可以使用name的值了。
要查询一个查询返回的是否空模型,我们可以用isEmpty()方法。
$user = User::where('name', 'thinkphp')->findOrEmpty();
if (!$user->isEmpty()) {
    echo $user->name;
}
二、select查多条用数据:
1、根据主键查询多条记录,例如:
$list = User::select();2、根据条件(查询构造器)查询多条记录,例如:
$list = User::where('status', 1)->limit(3)->order('id', 'asc')->select();3、对查询到的数据集进行遍历操作:
foreach($list as $key=>$user){
    echo $user->name;
}4、数据批量处理,适合处理大批量数据的情况,示例代码如下:
User::chunk(100, function ($users) {
    foreach($users as $user){
      // 处理user模型对象
    }
});
当然也可以加条件查询,但chunk必须放最后,比如:
// 先拼条件 → 最后再 chunk
User::where('status', 1)      // 条件1
    ->where('age', '>', 18)   // 条件2
    ->order('id', 'asc')      // 排序
    ->chunk(100, function ($users) {// 每次查100条
      
      // $users 就是满足上面条件的 100 条数据
      foreach($users as $user){
            // 处理
      }
});
5、游标查询适合大批量数据,比如十几万几十万数据使用cursor()查询,例如:
$cursor = User::where('status', 1)->cursor();
foreach ($cursor as $user) {
    echo $user->name;
}第一行的cursor()返回的$cursor是一个游标/生成器,不是数组,当进入foreach循环后才开始去取下一条记录,php内存中永远只有一条数据。
也可以直接在foreach中直接按照如下写法,无需先赋值到$cursor,代码如下:
foreach (User::where('status',1)->cursor() as $user) {
    // $user 是 User 模型对象
    echo $user->name;
}在数据量很大,万级数量以上,需要导出CSV、批量更新、数据迁移的情况下适合用cursor。


重要:tp6不再支持get()查询。
页: [1]
查看完整版本: thinkphp6使用模型操作查询数据库