查询数据

优质
小牛编辑
141浏览
2023-12-01

获取单个数据

获取单个数据的方法包括:

取出主键为1的数据

$user = UserModel::find(1);
echo $user->user_nickname;

如果你是在模型内部,请不要使用$this->user_nickname的方式来获取数据,请使用$this->getAttr('user_nickname') 替代。 或者在实例化模型后调用查询方法

$user = new UserModel();
// 查询单个数据
$user->where('user_nickname', '老猫')
    ->find();

find方法返回的是当前模型的对象实例,可以使用模型的方法。

获取多个数据

取出多个数据:

$users = UserModel::select([1,2,3]);
foreach($users as $key=>$user){
    echo $user->user_nickname;
}

数组方式和闭包方式的数据查询的区别在于,数组方式只能定义查询条件,闭包方式可以支持更多的连贯操作,包括排序、数量限制等。
或者在实例化模型后调用查询方法

$user = new UserModel(); // 查询数据集 $user->where('user_nickname', '老猫') ->limit(10) ->order('id', 'desc') ->select();

模型的all方法或者select方法返回的是一个包含模型对象的二维数组或者数据集对象。

## 数据集循环
模型select,all,paginate方法查询出来的是数据集,都是 `think/Collection` 子类的实例,对于数据集的循环,你可以使用多种方法,第一种就是 foreach,第二是 for,第三种是使用 collection 自带的 each 方法。注意前两种方法不能在循环时更改数据集里的数据,你不能把它当一个数组直接用键值更改,如果你想循环时更改数据集里的数据,只能使用第三种方法。

举例如下:

$user = new UserModel(); // 查询数据集 $user ->limit(10) ->order('id', 'desc') ->select();

$user->each(function($item, $key){

//对$item进行数据更改并返回$item
$item['user_nickname']='老猫不老';
return $item;

});

$user->each(function($item, $key){

// 如果想终止循环返回 false 就可以了 return false;

}); ```