Thinkphp 6.0模型的数据查询

本节课我们来学习模型中的数据查询操作。

一.数据查询

1. 使用 find()方法,通过主键(id)查询到想要的数据;

$user = UserModel::find(129);
return json($user);

2. 也可以使用 where()方法进行条件筛选查询数据;

$user = UserModel::where('username', '辉夜')->find();
return json($user);

3. 调用 find()方法时,如果数据不存在则返回 Null;

4. 同上,还有 findOrEmpty()方法,数据不存在返回空模型;

5. 此时,可以后使用 isEmpty()方法来判断,是否为空模型;

$user = UserModel::findOrEmpty(1111);
if ($user->isEmpty()) {
    echo '空模型,无数据!';
}

6. 使用 select([])方式,查询多条指定 id 的字段,不指定就是所有字段;

$user = UserModel::select([19,20,21]);
foreach ($user as $key=>$obj) {
    echo $obj->username;
}

7. 模型方法也可以使用 where 等连缀查询,和数据库查询方式一样;

$user = UserModel::where('status', 1)->limit(5)->order('id', 'desc')->select();

8. 获取某个字段 value()或者某个列 column()的值;

UserModel::where('id', 79)->value('username');
UserModel::whereIn('id',[79,118,128])->column('username','id');

9. 模型支持动态查询:getBy*,*表示字段名;

UserModel::getByUsername('辉夜');
UserModel::getByEmail('[email protected]');

10. 模型支持聚合查询:max、min、sum、count、avg 等;

UserModel::max('price');

11. 使用 chunk()方法可以分批处理数据,数据库查询时讲过,防止一次性开销过大;

UserModel::chunk(5, function ($users) {
    foreach($users as $user) {
        echo $user->username;
    }
    echo '
------
'; });

12. 可以利用游标查询功能,可以大幅度减少海量数据的内存开销,它利用了 PHP 生

成器特性。每次查询只读一行,然后再读取时,自动定位到下一行继续读取;

foreach (UserModel::where('status', 1)->cursor() as $user) {
    echo $user->username;
    echo '
------
'; }

你可能感兴趣的:(php,php)