//1. 参数为主键
$res = Staff::get(2);
//获取字段name的值,注意模型中用$this->getAttr("name")读取
dump($res -> name); //等价: dump($res["name"])
dump($res -> salary); //等价: dump($res["salary"])
//2. 参数为数组
$res = Staff::get([
'age'=>['>',30],
'salary'=>['BETWEEN',[3000,5000]]
]);
//生成的SQL语句
SELECT * FROM `staff` WHERE `age` > 30 AND `salary` BETWEEN 3000 AND 5000 LIMIT 1
//3. 参数为闭包,即回调函数来生成查询条件
$res = Staff::get(function($query){
$query->field([ //设置要显示的字段列表及别名
'id'=>'编号', //id字段别名:姓名
'name'=>'姓名',
'age'=>'年龄'
])->where([
'id'=>['>',2] //条件: id > 2
])->whereOr([ //追回OR条件
'age'=>['exp','<40'] //age < 40
]);
});
dump($res->getData()); //获取原始数据
//输出结果:
array(3) {
["编号"] => int(1) //结果中字段名称已经是设置的直观中文别名啦
["姓名"] => string(6) "郭靖"
["年龄"] => int(30)
}
//4.用模型类直接静态调用数据库的查询方法(可链式),返回模型数据对象
$res = Staff::where('age','LT',40)->find();
dump($res->getData());
二、all(条件): 返回满足条件的多条记录
// 1.参数为主键,多个主键放在一个数组中
$res = Staff::all([1,3,5]);
//循环遍历模型对象数组
foreach ($res as $val) {
dump($val->getData());
}
// 2.参数是条件,多个AND条件,打包到一个数组中
$res = Staff::all([
'age'=>['>',20],
'salary'=>['BETWEEN',[3000,5000]]
]);
//循环遍历模型对象数组
foreach ($res as $val) {
dump($val->getData());
}
//3. 参数使用闭包,返回对象数组
$res = Staff::all(function($query){
$query->field([
'id'=>'编号',
'name'=>'姓名',
'age'=>'年龄'
])->where([
'id'=>['>',2]
])->whereOr([
'age'=>['exp','<40']
]);
});
//循环遍历模型对象数组
foreach ($res as $val) {
dump($val->getData());
}
// 4.用模型类直接静态调用数据库的查询方法(可链式)
$res = Staff::where('salary','>',3500)->select();
//循环遍历模型对象数组
foreach ($res as $val) {
dump($val->getData());
}
三、获取字段列表column()
//1.获取name列所有数据,返回一维数组,默认返回索引数组
$res = Staff::column('name');
dump($res);
//2.参数为数组,第一个数组元素id为键名,返回关联数组
$res = Staff::column(['id','name']);
dump($res);
四、获取单字段的值value()
//value()方法通常要求前面有查询条件
$res = Staff::where('id',3)->value('name');
dump($res);