相信各位都是各界大佬,就不介绍mvc思想了
查询多条数据
获取多个数据(推荐静态调用select方法)
①静态调用all方法或者select
// 获取所有的数据all和select
$list = User::all();
// 根据主键获取多个数据all和select where id in (1,2,3)
$list = User::all('1,2,3');
$list = User::all([1,2,3]);
// 或者使用数组查询(只能用all不能用select) where status = 1
$list = User::all(['status'=>1]);
②动态调用all方法或者select方法
$user = new User();
// 查询所有数据all和select
$list = $user->select();
// 根据主键查询多条数据all和select
$list = $user->select('1,2,3');
$list = $user->select([1,2,3]);
// 或者使用数据查询(只能用all不能select)
$list=$user->all(['status'=>1]);
注意:all方法或者select方法返回的是一个包含模型对象的二维数组获取空数组
select方法和All方法的应用:
获取一个数据(推荐静态调用find方法)
①静态调用get方法获取find方法
// 取出主键为1的数据 where id = 1
$user = appadminmodelUser::get(1);
$user = appadminmodelUser::find(1);
// 使用数组查询(非主键字段),只能用get不能用find where name = 'thinkphp'
$user=user::get(['name' => 'thinkphp']);
// 取出第一条数据,只能用find不能用get
$user = User::find();
②动态调用get方法或者find方法
$user = new User();
// 取出主键为1的数据
$info = $user->find(1);
$info = $user->get(1);
// 使用数组查询(非主键字段),只能使用get不能用find
$Info = $user->get(['name' => 'thinkphp']);
// 取出第一条数据,只能使用find不能使用get
$info = $user->find();
注意:get或者find方法返回的是当前模型的对象实例或者null
返回的模型对象,可以直接当做数组使用,也可以调用toArray() 直接转化为数组。
其他查询方法(where方法)
1、where方法(查询语法)
where('字段名','表达式','查询条件');
whereor('字段名','表达式','查询条件');
表达式 含义
EQ、= 等于(=)
NEQ、<> 不等于(<>)
GT、> 大于(>)
EGT、>= 大于等于(>=)
LT、< 小于(<)
ELT、<= 小于等于(<=)
LIKE 模糊查询
[NOT] BETWEEN (不在)区间查询
[NOT] IN (不在)IN 查询
[NOT] NULL 查询字段是否(不)是NULL
[NOT] EXISTS EXISTS查询
EXP 表达式查询,支持SQL语法
> time 时间比较
< time 时间比较
between time 时间比较
notbetween time 时间比较
引用示例
$info = User::where('id','=','1')->find();
$info = User::where('id','1')->find();
$info = User::where('name','like','%thinkphp%')->select();
注意:使用了where方法后,查询数据可以使用find方法和select方法,不能使用get方法和all方法。(原因:where方法返回的是Query对象,不是模型对象)
2、连贯操作(链式操作)
原理:中间调用的方法,返回值是对象,可以继续调用对象的其他方法
一条SQL语句的组成可以很复杂,里边有where、order by、group by、限制查询的字段、limit、having限制条件等等,这些复杂的条件在tp框架中都有封装
注:TP框架中,中间的方法没有顺序要求,当时用于获取最终结果的find和select等方法,必须在最后。
常用链式操作方法
$model = new Address();
$model->field('id,name')->select(); //指定要查询的字段,原生sql中select后面的字段
$model->order('id desc,time desc')->select(); //相当于原生sql中的order by
$model->limit(3)->select(); //相当于原生sql中的limit条件
$model->limit(0,3)->select();
$model->limit('0,3')->select();
$model->group('cate_id')->select(); //相当于原生sql中的group by
$model->having('id>3')->select(); //相当于原生sql中的having条件
$model->alias('a')->join('think_user_type t','a.id=t.user_id', 'left')->select(); //alias方法设置别名,join方法连表查询
//Address::alias('a')->join('tpshop_user u','a.user_id = u.id', 'left')->select();
3、统计查询(聚合查询)
方法 说明
count 统计数量,参数是要统计的字段名(可选)
max 获取最大值,参数是要统计的字段名(必须)
min 获取最小值,参数是要统计的字段名(必须)
avg 获取平均值,参数是要统计的字段名(必须)
sum 获取总分,参数是要统计的字段名(必须)
// 统计查询
$count = appadminmodelGoods::where('id','>',32)->count();
dump($count);
$max = appadminmodelGoods::where('id','>',32)->max('id');
dump($max);
4、数据字段查询
①查询一条记录的一个字段
Goods::where(‘id’, 2)->value(‘goods_name’);
②查询多条记录的一个字段的值,返回一个一维索引数组
Goods::where(‘id’, ‘GT’, 2)->column(‘goods_name’);
③查询多条记录的一个字段的值,以id字段值作为数组索引
5、trace调试
Trace调试功能就是ThinkPHP提供给开发人员的一个用于开发调试的辅助工具。可以实时显示当前页面的操作的请求信息、运行情况、SQL执行、错误提示等
开启trace调试:
修改application/config.php , 配置以下参数:
'app_trace' => true