Install
openclaw skills install sql-reflect快速定位 SQL 语句在 PHP/Laravel 代码中的触发位置,通过分析 SQL 结构反向追踪到具体的代码文件、方法和行号
openclaw skills install sql-reflect当用户使用以下表述时触发此技能:
从 SQL 语句中提取:
pk_transaction_meet_records)使用 grep 工具执行以下搜索(按优先级):
搜索表名(最精确)
pk_表名*.phpapp/搜索模型类名
pk_ 前缀,转 PascalCasepk_transaction_meet_records → TransactionMeetRecord搜索特殊字段组合
对比 SQL 特征和代码:
查找涉及的模型关联定义:
function 关联名() 在 Models 目录从找到的代码位置向上追踪:
## SQL 语句触发位置分析
### 📍 触发代码位置
**文件路径:** `/path/to/file.php`
**方法:** `methodName`(第 X 行开始)
**具体代码段:** 第 X-Y 行
---
### 🔍 SQL 生成逻辑
这段代码通过 [Laravel Eloquent 特性] 生成:
```php
// 关键代码片段(10-20 行)
查询涉及的模型关联:
关联名 - 模型类::关联方法()(第 X 行)-- SQL 结构说明
Controller.php:行号
↓ (调用说明)
Service.php:行号
↓
Model::query()
↓
最终 SQL
这个查询用于 [业务场景说明]
## 表名映射参考
| 表名 | 模型类 |
|------|--------|
| pk_transaction_meet_records | TransactionMeetRecord |
| pk_customer | Customers |
| pk_customer_card | CustomerCard |
| pk_order_offline | OrderOffline |
| pk_order_offline_refund_logs | OrderOfflineRefundLogs |
| pk_order_online | OrderOnline |
| pk_template_activity | TemplateActivity |
| pk_guide | StoreGuide |
| pk_store | Store |
| pk_customer_goods_attribute_tag | CustomerGoodsAttributeTag |
| pk_guide_customer | GuideCustomer |
| pk_promotion_goods | PromotionGoods |
| pk_order_goods_online | OrderGoodsOnline |
| pk_order_goods_online_records | OrderGoodsOnlineRecord |
## SQL 结构对应
| SQL 结构 | Laravel 写法 |
|---------|-------------|
| EXISTS (SELECT...) | whereHas() / whereExists() |
| LEFT JOIN | leftJoin() / with() |
| INNER JOIN | join() |
| BETWEEN ... AND ... | whereBetween() |
| IN (...) | whereIn() |
| NOT EXISTS | whereDoesntHave() |
## 特殊字段组合
| 字段组合 | 可能业务 |
|---------|---------|
| business_no + source_type + is_met | TransactionMeetRecord |
| order_no + refund_order_no + is_valid | OrderOfflineRefundLogs |
| customer_id + first_consume_time + second_consume_time | CustomerCard |
| guide_id + customer_id + relation_type | GuideCustomer |
| attribute_pid + attribute_id + num | CustomerGoodsAttributeTag |
## 注意事项
1. 优先使用精确搜索(完整表名),再使用模糊搜索
2. 注意表名前缀(pk_)和模型命名规则
3. 如果找到多个匹配位置,按匹配度排序并说明差异
4. SQL 中的 `?` 在代码中对应变量或请求参数
5. 某些 SQL 可能由多个代码位置生成,需列出所有可能