# 查询 [TOC] ## 单条数据查询 `find`与 `get` 的区别。查询单条数据只能用find,查询数组数据(非主键字段)只能用get。 `find`或`get`方法返回的是当前**模型的对象实例**,可以使用模型的方法。 `find`或 `get`查询不到结果 返回 null。 简单实例: ``` // 使用数组查询 $user = User::get(['name' => 'thinkphp']); // 查询单个数据 \app\admin\model\Token::where('id','1')->find(); ``` ## 多个数据查询 `all`与 `select`的区别。使用数组查询只能使用all。 `all`或 `select`返回的是一个**包含模型对象的二维数组**。 `all`或 `select`查询不到结果 **返回空数组**。 简单实例: ``` // 使用数组查询 \app\admin\model\Token::all(['token' =>'11']); // select查询 \app\admin\model\Token::select(); ``` ## 查询语法 简单实例: ``` where('字段名','表达式','查询条件'); whereOr('字段名','表达式','查询条件'); ``` 注意:使用了where方法后,查询数据可以使用find方法和select方法,不能使用get方法和all方法。如果表达式是 = 第二个参数表达式可以省略不写。 ## 链式查询 Thinkphp中,中间的方法不跟原生MySQL要求一样要求顺序必须按照规定的来,但是用于最终的结果只能是find或select,不能是get或all。 简单实例: ``` $model = new Address(); // 指定要查询的字段,原生sql中select后面的字段 $model->field('id,name')->select(); // 相当于原生sql中的order by $model->order('id desc')->select(); // 相当于原生sql中的limit条件 $model->limit(0,3)->select(); // 相当于原生sql中的group by $model->group('cate_id')->select(); // 相当于原生sql中的having条件 $model->having('id>3')->select(); // alias方法设置别名,join方法连表查询 $model->alias('a')->join('think_user_type t','a.id=t.user_id', 'left')->select(); ``` ## 聚合函数 聚合函数只能放在最后且不需要再使用find或select 简单实例: ``` \app\admin\model\Token::where('id','>','1')->max(); ```