获取单个数据

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

取出主键为1的数据

  1. $user = UserModel::get(1);
  2. echo $user->user_nickname;
  3. // 使用数组查询
  4. $user = UserModel::get(['user_nickname' => '老猫']);
  5. // 使用闭包查询
  6. $user = UserModel::get(function($query){
  7. $query->where('user_nickname', 'thinkphp');
  8. });
  9. echo $user->user_nickname;

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

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

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

获取多个数据

取出多个数据:

  1. // 根据主键获取多个数据
  2. $users = UserModel::all('1,2,3');
  3. // 或者使用数组
  4. $users = UserModel::all([1,2,3]);
  5. foreach($users as $key=>$user){
  6. echo $user->user_nickname;
  7. }
  8. // 使用数组查询
  9. $users = UserModel::all(['user_status'=>1]);
  10. // 使用闭包查询
  11. $users = UserModel::all(function($query){
  12. $query->where('user_status', 1)->limit(3)->order('id', 'asc');
  13. });
  14. foreach($users as $key=>$user){
  15. echo $user->name;
  16. }

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

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

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

原文: https://www.thinkcmf.com/docs/cmf/模型-查询数据.html