查询数据

获取单个数据

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

取出主键为1的数据

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

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

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

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

获取多个数据

取出多个数据:

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

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

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

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

[数据集循环]

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

举例如下:

  1. $user = new UserModel();
  2. // 查询数据集
  3. $user
  4. ->limit(10)
  5. ->order('id', 'desc')
  6. ->select();
  7. $user->each(function($item, $key){
  8. //对$item进行数据更改并返回$item
  9. $item['user_nickname']='老猫渣渣';
  10. return $item;
  11. });
  12. $user->each(function($item, $key){
  13. // 如果想终止循环返回 false 就可以了
  14. return false;
  15. });