根据你提供的错误信息“method not exist: think\db\Query->get”,这表明在使用 think\db\Query
类时,调用了一个不存在的方法 get()
。在 ThinkPHP 框架中,查询构建器通常使用 select()
方法来获取结果,而不是 get()
。
将 get()
方法替换为 select()
方法。以下是修改后的代码示例:
/**
* @notes 下架key
* @param $errorMsg
* @author cjhao
* @date 2023/8/10 14:20
*/
public function takeDownKey($errorMsg) {
$keyAutoDown = ConfigService::get('chat_config', 'key_auto_down');
// key自动下架关闭
if (0 == $keyAutoDown) {
echo "key自动下架关闭。\n"; // 调试输出没有匹配到的情况
return true;
}
$where = [];
$where[] = ['ai_key', '=', $this->aiKey];
if (is_array($this->apiKey)) {
foreach ($this->apiKey as $item => $value) {
$where[] = [$item, '=', $value];
}
} else {
$where[] = ['key', '=', $this->apiKey];
}
// 检查是否有符合条件的记录
$existingKeys = KeyPool::where($where)->select(); // 使用 select() 方法
if ($existingKeys->isEmpty()) {
echo "没有找到符合条件的记录。\n"; // 调试输出
return false;
}
$errorMsg['stop_time'] = date('Y-m-d H:i:s');
// 更新key
$updatedRows = KeyPool::where($where)->update([
'status' => 0,
'notice' => json_encode($errorMsg, JSON_UNESCAPED_UNICODE)
]);
if ($updatedRows > 0) {
echo "成功下架key,受影响的行数: $updatedRows\n"; // 调试输出
} else {
echo "下架key失败,未更新任何记录。\n"; // 调试输出
}
// 删除缓存
$this->delKey();
}
get()
方法替换为 select()
方法,以符合 ThinkPHP 的查询构建器用法。这样修改后,代码应该能够正常运行,并且可以正确检查是否有符合条件的记录。