查询
查询一行
- get($where)
查询多行
- all($where)
返回值说明
get
返回的是一个EasySwoole\ORM\AbstractModel
实例,可以复用进行模型的其他操作 当没有查询结果时返回null
all
返回的是一个数组,里面的每一个元素都是EasySwoole\ORM\AbstractModel
实例
多种传参方式
在以上方法列表中,最重要的是$where
参数,可以实现多种使用方式
// 通过主键
$res = UserModel::create()->get(1);
// 通过key=>value 数组
$res = UserModel::create()->get([
'u_id' => 1,
'u_state' => 0,
'is_vip' => 1
]);
// 通过闭包方式,构造复杂的sql
// 这是一种很强大灵活的方式,闭包的参数是一个mysqli组件的查询构造器,可以调用所有连贯操作
// http://www.easyswoole.com/Components/Mysqli/builder.html
$res = UserModel::create()->get(function(QueryBuilder $queryBuilder){
$queryBuilder->where('u_state', 1);
$queryBuilder->where('age', 12, '>');// 各种特殊操作符 between like != 等等都可以完成
$queryBuilder->order('u_id');
});
// 连贯操作,继续可以往下查看ORM的文档
$res = UserModel::create()->where('u_id', 1)->get();
分页
limit和withTotalCount,获取分页列表数据以及总条数。
下面模拟获取分页列表数据,page为页码,limit为每页显示多少条数。
$page = 1; // 当前页码
$limit = 10; // 每页多少条数据
$model = AdminModel::create()->limit($limit * ($page - 1), $limit)->withTotalCount();
// 列表数据
$list = $model->all(null);
$result = $model->lastQueryResult();
// 总条数
$total = $result->getTotalCount();
快速查询
获取查询结果某一列的值,如果 $column
为空,则会返回查询结果的第一列
- column(?string $column = null): ?array
获取查询结果某一列第一行的值,如果 $column
为空,则会返回查询结果的第一列第一行的值
- scalar(?string $column = null): ?array
获取结果并使用某一列的作为索引
- indexBy(string $column): ?array
$nameList = UserListModel::create()->column('name');
/*
会返回类似这样的数组
[
'tom',
'tony',
'alex'
'ben'
]
*/
$name = UserListModel::create()->scalar('name');
$age = UserListModel::create()->limit(1)->scalar('age');
/*
会返回单个值
$name = 'tom';
$age = 12;
*/
$userList = UserListModel::create()->indexBy('age');
/*
会返回类似这样的数组
[
'12' => [
'tom',
'tony'
],
'13' => [
'alex',
]
'14' => [
'ben',
]
]
*/
column
,scalar
,indexBy
这三个方法都是对all
方法的封装。scalar
方法只是返回查询结果当中的某一列第一行的值, 条件语句中不会自动加上 LIMIT 1 条件。column
,scalar
,indexBy
这三个方法在获取数据失败时会返回null
,获取数据失败时不一定查询失败,也可能返回的数据里没有对应的列名
null条件查询
如果需要查询 为null/不为null 的数据.
$model = new \App\Model\RequestLogModel();
$model->where('a',null,'is')->get();
$model->where('a',null,'is not')->get();
当前内容版权归 EasySwoole 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 EasySwoole .