新增功能
This commit is contained in:
@@ -0,0 +1,104 @@
|
||||
# 挂号管理联表查询修复
|
||||
|
||||
## 问题描述
|
||||
|
||||
挂号列表页面中,患者姓名和医生姓名没有显示,后端接口返回数据不全。
|
||||
|
||||
## 问题原因
|
||||
|
||||
在 `AppointmentLists.php` 和 `AppointmentLogic.php` 中,联表查询时使用的表名缺少表前缀 `la_`。
|
||||
|
||||
ThinkPHP 在使用 `leftJoin()` 时,需要指定完整的表名(包括表前缀),而不能只写表名。
|
||||
|
||||
## 错误代码
|
||||
|
||||
```php
|
||||
// 错误:缺少表前缀
|
||||
->leftJoin('user u', 'a.patient_id = u.id')
|
||||
->leftJoin('admin ad', 'a.doctor_id = ad.id')
|
||||
```
|
||||
|
||||
## 正确代码
|
||||
|
||||
```php
|
||||
// 正确:包含表前缀 la_
|
||||
->leftJoin('la_user u', 'a.patient_id = u.id')
|
||||
->leftJoin('la_admin ad', 'a.doctor_id = ad.id')
|
||||
```
|
||||
|
||||
## 修复的文件
|
||||
|
||||
### 1. server/app/adminapi/lists/doctor/AppointmentLists.php
|
||||
|
||||
修复了两处:
|
||||
- `lists()` 方法中的联表查询
|
||||
- `count()` 方法中的联表查询
|
||||
|
||||
### 2. server/app/adminapi/logic/doctor/AppointmentLogic.php
|
||||
|
||||
修复了一处:
|
||||
- `detail()` 方法中的联表查询
|
||||
|
||||
## 数据库表说明
|
||||
|
||||
系统使用的表:
|
||||
- `la_doctor_appointment` - 挂号表(主表)
|
||||
- `la_user` - 用户表(患者信息)
|
||||
- `la_admin` - 管理员表(医生信息)
|
||||
|
||||
字段映射:
|
||||
- `u.nickname` → `patient_name` (患者姓名)
|
||||
- `u.mobile` → `patient_phone` (患者电话)
|
||||
- `ad.name` → `doctor_name` (医生姓名)
|
||||
|
||||
## 验证方法
|
||||
|
||||
修复后,访问挂号列表接口应该返回完整的数据:
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 1,
|
||||
"msg": "success",
|
||||
"data": {
|
||||
"lists": [
|
||||
{
|
||||
"id": 1,
|
||||
"patient_id": 2,
|
||||
"patient_name": "张三", // ✅ 现在有值了
|
||||
"patient_phone": "13800138000", // ✅ 现在有值了
|
||||
"doctor_id": 1,
|
||||
"doctor_name": "李医生", // ✅ 现在有值了
|
||||
"appointment_date": "2026-03-05",
|
||||
"appointment_time": "09:00:00",
|
||||
"status": 1,
|
||||
"status_desc": "已预约",
|
||||
...
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 注意事项
|
||||
|
||||
在 ThinkPHP 中使用联表查询时:
|
||||
|
||||
1. **使用模型的 leftJoin()**:必须指定完整表名(包括表前缀)
|
||||
```php
|
||||
->leftJoin('la_user u', 'a.patient_id = u.id')
|
||||
```
|
||||
|
||||
2. **使用 Db::table()**:可以不加表前缀(框架会自动添加)
|
||||
```php
|
||||
Db::table('user')->alias('u')->...
|
||||
```
|
||||
|
||||
3. **表前缀配置**:在 `config/database.php` 中配置
|
||||
```php
|
||||
'prefix' => 'la_',
|
||||
```
|
||||
|
||||
## 相关文档
|
||||
|
||||
- `APPOINTMENT_MANAGEMENT_COMPLETE.md` - 挂号管理完整文档
|
||||
- `APPOINTMENT_SETUP_GUIDE.md` - 配置指南
|
||||
Reference in New Issue
Block a user