thinkphp5 对select出来的结果再加where条件和order排序重新查询
时间: 2024-10-24 11:04:23 浏览: 19
thinkphp3.2框架中where条件查询用法总结
ThinkPHP5 提供了一种方便的方式来处理对已获取到的 `SELECT` 查询结果进行进一步筛选(添加 WHERE 条件)和排序(ORDER BY)。当你从数据库获取数据后,可以使用模型的动态方法(比如 `where()` 和 `order()`)修改查询条件。
例如,假设你已经有一个基础的查询:
```php
$list = User::all(); // 获取所有用户
```
如果你想只选择某个部门的用户,并按注册日期降序排列,可以在循环内部继续操作:
```php
$departmentId = 1; // 部门 ID
$orderField = 'register_time'; // 排序字段
foreach ($list as $key => $user) {
if ($user['department_id'] == $departmentId) { // 添加WHERE条件
$list[$key] = User::where('id', $user['id'])->where('department_id', $departmentId)->order($orderField, 'DESC')->find();
} else {
unset($list[$key]); // 如果不符合条件,移除元素
}
}
```
这样,每次迭代,都会应用新的 `where` 和 `order` 条件对当前用户的记录进行重新查询。但是请注意,这种方法可能会导致多次查询数据库,如果数据量大,性能上可能不是最优的。
阅读全文