Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
Laravel Eloquent 高级搜索:解决多关联模型与多条件查询难题_创想鸟

Laravel Eloquent 高级搜索:解决多关联模型与多条件查询难题

laravel eloquent 高级搜索:解决多关联模型与多条件查询难题

本文深入探讨了在 Laravel Eloquent 中实现复杂多条件搜索的常见问题与解决方案。重点介绍了如何结合使用 scope、orWhereHas 以及正确的 orWhere 逻辑分组,以实现对用户自身属性、关联角色和部门进行灵活且高效的模糊查询。文章通过详细代码示例,阐明了 with 与 orWhereHas 的核心区别,并提供了构建健壮、可维护搜索功能的专业指导。

Laravel Eloquent 搜索的常见挑战

在 Laravel 应用中,当需要对主模型(如 User)及其关联模型(如 Role、Department)进行多条件模糊搜索时,开发者常会遇到查询结果不符合预期的问题。一个典型的场景是,用户希望通过一个搜索词,同时匹配用户的姓名、邮箱,以及其所属的角色或部门的标题。

原始代码尝试通过 User::with([…])->search(…) 的方式来实现,但这种方法存在根本性误解:

$query = User::with([    'roles' => function($query) use($searchValues) {        return $query->where('title', 'LIKE','%'.$searchValues.'%');    },    'departments' => function($query) use($searchValues) {        return $query->where('title', 'LIKE','%'.$searchValues.'%');    }])->search($searchValues) // 这里的 search scope 仅针对 User 模型字段->orderBy($orderColumnName,$order)->limit($request->length)->get();

上述代码中,with() 方法用于预加载关联数据,以便在获取 User 模型实例后,能够方便地访问其 roles 和 departments。with() 中的闭包条件只是限制了预加载的关联数据,而不是用来过滤主模型(User)的。这意味着,即使某个用户不满足 roles 或 departments 的搜索条件,只要他满足 User 自身的 search 条件,该用户仍然会被查询出来,只是其关联的 roles 或 departments 可能为空或被过滤。这与我们期望的“通过关联模型条件来筛选主模型”的目的背道而驰。

理解 orWhereHas 的作用

要解决上述问题,我们需要使用 whereHas 或 orWhereHas 方法。这些方法允许我们根据关联模型的条件来过滤主模型。

whereHas(relation, callback): 仅当关联模型满足 callback 条件时,才返回主模型实例。这相当于 SQL 中的 INNER JOIN 或 EXISTS 子句。orWhereHas(relation, callback): 在 OR 逻辑下,当关联模型满足 callback 条件时,返回主模型实例。这通常用于将关联模型的条件与主模型的条件进行联合搜索。

在我们的多条件模糊搜索场景中,用户可能希望匹配任意一个条件(用户姓名、邮箱,或角色标题,或部门标题),因此 orWhereHas 是更合适的选择。

构建多条件关联搜索

为了实现既能搜索用户自身属性,又能搜索关联模型属性的复杂查询,我们需要将 scopeSearch 与 orWhereHas 结合起来,并注意 orWhere 的逻辑分组。

首先,确保 User 模型中的 scopeSearch 方法正确定义,用于搜索用户自身的 first_name, last_name, email:

// app/Models/User.phpclass User extends Authenticatable{    // ... 其他属性和方法 ...    /**     * 作用域:根据姓名和邮箱进行模糊搜索。     */    public function scopeSearch($query, $searchValues)    {        // 注意:这里的 orWhere 是针对 User 模型的字段        return $query->where('first_name', 'like', '%'.$searchValues.'%')                     ->orWhere('last_name', 'like', '%'.$searchValues.'%')                     ->orWhere('email', 'like', '%'.$searchValues.'%');    }    // ... 关联关系定义 ...    public function departments()    {        return $this->belongsToMany(Department::class, 'users_departments', 'user_id', 'department_id');    }    public function roles()    {       return $this->belongsToMany(Role::class, 'users_roles', 'user_id', 'role_id');    }}

接下来,构建正确的 Eloquent 查询:

use AppModelsUser;use IlluminateHttpRequest;// 假设 $request->searchValues, $request->orderColumnName, $request->order, $request->length 已定义// 定义一个可复用的闭包,用于关联模型的搜索条件$searchClosure = function ($query) use ($searchValues) {    return $query->where('title', 'LIKE', "%{$searchValues}%");};$users = User::with(['roles' => $searchClosure, 'departments' => $searchClosure])    ->where(function ($query) use ($searchValues, $searchClosure) {        // 首先应用 User 模型的自身搜索条件        $query->search($searchValues);        // 然后使用 orWhereHas 引入关联模型的搜索条件        // 注意:这里的 orWhereHas 会在外部的 where 闭包中与 scopeSearch 的条件进行 OR 逻辑组合        $query->orWhereHas('roles', $searchClosure);        $query->orWhereHas('departments', $searchClosure);    })    ->orderBy($orderColumnName, $order)    ->limit($request->length)    ->get();

代码解释:

$searchClosure: 定义了一个可复用的闭包,封装了对关联模型 title 字段的模糊搜索逻辑。这提高了代码的可读性和维护性。User::with([‘roles’ => $searchClosure, ‘departments’ => $searchClosure]): 这部分仍然用于预加载匹配条件的 roles 和 departments。虽然 orWhereHas 已经过滤了主模型,但我们通常仍然需要加载这些关联数据以便在视图中显示。->where(function ($query) use ($searchValues, $searchClosure) { … }): 这是一个关键步骤。我们将所有的搜索条件(包括用户自身字段和关联字段)包裹在一个 where 闭包中。这确保了所有 OR 条件被正确地分组,避免了与全局作用域或其他查询条件产生意外的逻辑交叉。$query->search($searchValues): 调用 User 模型上的 scopeSearch 方法,添加 first_name, last_name, email 的 OR 条件。$query->orWhereHas(‘roles’, $searchClosure): 添加一个 OR 条件,如果用户有任何角色满足 $searchClosure 中的条件,则该用户被选中。$query->orWhereHas(‘departments’, $searchClosure): 同样,添加一个 OR 条件,如果用户有任何部门满足 $searchClosure 中的条件,则该用户被选中。这整个闭包内的条件将作为一个整体的 WHERE (condition1 OR condition2 OR condition3) 应用到查询中。

with 与 whereHas/orWhereHas 的区别

理解这两者的核心区别至关重要:

with() (预加载):

目的: 优化 N+1 查询问题,一次性加载所有主模型实例的关联数据。行为: 不会过滤主模型。它只是在主模型被查询出来后,为每个主模型实例加载其关联数据。闭包条件仅作用于加载的关联数据集。SQL: 通常会生成两条或多条 SQL 查询(一条用于主模型,一条或多条用于关联模型,通过 IN 子句连接)。

whereHas() / orWhereHas() (条件过滤):

目的: 根据关联模型的条件来过滤主模型。行为: 只有当关联模型满足指定条件时,对应的主模型实例才会被返回。SQL: 通常会生成一条包含 JOIN 或 EXISTS 子句的 SQL 查询,直接在数据库层面进行过滤。

简而言之,with 是“获取这些用户,并把他们的角色和部门也带上”,而 whereHas/orWhereHas 是“只获取那些有特定角色或部门的用户”。在复杂搜索中,两者通常需要结合使用:先用 whereHas/orWhereHas 过滤出符合条件的主模型,再用 with 预加载这些主模型的关联数据。

orWhere 逻辑分组的重要性

Laravel 官方文档强烈建议在使用 orWhere 时进行逻辑分组,以避免意外行为。例如:

// 推荐的做法$query->where(function ($q) {    $q->where('name', 'like', '%John%')      ->orWhere('email', 'like', '%John%');});// 可能导致意外行为(尤其当有全局作用域时)$query->where('status', 'active')      ->orWhere('name', 'like', '%John%')      ->orWhere('email', 'like', '%John%');

在我们的解决方案中,我们将所有的 search 和 orWhereHas 条件都包裹在一个 where 闭包中,这正是遵循了 orWhere 逻辑分组的最佳实践,确保了整个搜索逻辑的清晰性和正确性。

注意事项与性能优化

索引: 确保 users 表的 first_name, last_name, email 字段,以及 roles 和 departments 表的 title 字段上建立了适当的数据库索引。对于 LIKE ‘%value%’ 这种前缀模糊匹配,标准索引可能效率不高,但对于 LIKE ‘value%’ 或精确匹配则非常有效。考虑使用数据库特定的全文搜索功能(如 MySQL 的 FULLTEXT 索引)来优化复杂的模糊搜索。大数据量: 当用户量、角色或部门数量非常庞大时,频繁进行多表 JOIN 和 LIKE 查询可能会导致性能瓶颈。考虑引入专业的搜索服务,如 Elasticsearch 或 Algolia,它们专门为复杂搜索和大数据量场景设计。对于简单的模糊搜索,可以考虑对搜索词进行分词处理,或限制搜索结果的数量。查询调试: 在开发过程中,使用 toSql() 和 getBindings() 方法来查看 Eloquent 生成的实际 SQL 语句及其绑定参数,这对于调试复杂的查询非常有帮助。

$usersQuery = User::with([...])->where(function ($query) { /* ... */ });dd($usersQuery->toSql(), $usersQuery->getBindings());

总结

在 Laravel Eloquent 中实现多条件、多关联模型的复杂搜索,需要深入理解 with、whereHas 和 orWhereHas 的不同作用。核心要点在于:

使用 whereHas 或 orWhereHas 来根据关联模型的条件过滤主模型。使用 with 来预加载过滤后的主模型的关联数据,以避免 N+1 问题。始终将 orWhere 条件进行逻辑分组,以确保查询逻辑的准确性和可预测性。

通过遵循这些最佳实践,您可以构建出高效、健壮且易于维护的 Laravel 搜索功能。

以上就是Laravel Eloquent 高级搜索:解决多关联模型与多条件查询难题的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1288565.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
Laravel Eloquent 跨模型复杂搜索查询指南
上一篇 2025年12月11日 05:07:45
PHPStorm中require引入文件后变量仍显示未定义:原因与解决方案
下一篇 2025年12月11日 05:07:56

相关推荐

  • Gemini如何接入数据分析 Gemini大数据处理接口

    Gemini如何接入数据分析 Gemini大数据处理接口Gemini如何接入数据分析 Gemini大数据处理接口Gemini如何接入数据分析 Gemini大数据处理接口Gemini如何接入数据分析 Gemini大数据处理接口

    本文将详细介绍如何将 Gemini 的数据分析能力接入到大数据处理流程中,并提供具体的操作步骤,帮助您更有效地利用 Gemini 进行数据洞察和分析。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 数据接入基础准备 在开始接入之前,您需要对…

    2026年9月28日 • 用户投稿
    000
  • 计算JSON驱动的问卷调查的可能路径数:Java递归实现

    计算JSON驱动的问卷调查的可能路径数:Java递归实现计算JSON驱动的问卷调查的可能路径数:Java递归实现计算JSON驱动的问卷调查的可能路径数:Java递归实现计算JSON驱动的问卷调查的可能路径数:Java递归实现

    本文旨在提供一种使用Java和递归算法,计算基于JSON配置的问卷调查中所有可能的路径数量的解决方案。我们将深入探讨如何解析JSON结构,并使用递归函数遍历所有可能的答案分支,最终计算出完成问卷调查的不同方式的总数。此外,还将讨论在设计此类问卷调查逻辑时的一些注意事项。 理解JSON问卷结构 首先,…

    2026年9月28日 • 用户投稿
    000
  • 小红书如何利用话题标签增加曝光 小红书热门标签的使用秘诀

    小红书如何利用话题标签增加曝光 小红书热门标签的使用秘诀小红书如何利用话题标签增加曝光 小红书热门标签的使用秘诀小红书如何利用话题标签增加曝光 小红书热门标签的使用秘诀小红书如何利用话题标签增加曝光 小红书热门标签的使用秘诀

    选择与内容高度相关的标签,如分享美白精华心得时使用#美白精华、#淡斑等精准标签,提升平台推荐准确性;2. 结合热门标签与长尾标签,如在使用#美白精华的同时添加#敏感肌美白精华、#学生党美白精华,平衡流量与竞争;3. 积极使用品牌或官方活动标签,如参与#我的夏日穿搭挑战赛时带上官方标签,增加曝光与活动…

    2026年9月28日 • 用户投稿
    000
  • 多模态AI如何处理雷达数据 多模态AI信号处理技术方案

    多模态AI如何处理雷达数据 多模态AI信号处理技术方案多模态AI如何处理雷达数据 多模态AI信号处理技术方案多模态AI如何处理雷达数据 多模态AI信号处理技术方案多模态AI如何处理雷达数据 多模态AI信号处理技术方案

    本文将详细介绍多模态AI如何处理雷达数据,并提供一套信号处理技术方案,帮助您理解并学习如何利用多模态AI的强大能力来解析复杂的雷达信号。我们将从数据预处理开始,逐步深入到特征提取、模型构建以及最终的雷达信号分析与应用,旨在为您提供一个清晰的学习路径。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜…

    2026年9月28日 • 用户投稿
    000
  • 解决Microsoft Graph API中获取用户活动时的429限流错误

    本文旨在深入探讨Microsoft Graph API在获取用户近期活动时可能遇到的429“请求过多”限流错误。我们将分析该错误产生的原因,提供导致问题的代码示例,并详细阐述如何通过理解Graph API的限流机制、实现指数退避重试以及优化API调用策略来有效应对和避免此类错误,从而构建更稳定可靠的…

    2026年9月28日
    000
  • 2025年精选免费将图片生成视频的AI工具前十强

    2025年推荐的免费图片转视频AI工具包括RunwayML Gen-2、Pika Labs、Kaiber、Synthesia IO、DeepMotion Animate 3D、Movavi Slideshow Maker、Kapwing、VEED.IO、Simplified和Designs.AI,这…

    2026年9月28日
    000
  • OptaPlanner 过约束规划:虚拟值与空值变量的策略选择

    OptaPlanner 过约束规划:虚拟值与空值变量的策略选择OptaPlanner 过约束规划:虚拟值与空值变量的策略选择OptaPlanner 过约束规划:虚拟值与空值变量的策略选择OptaPlanner 过约束规划:虚拟值与空值变量的策略选择

    本文深入探讨OptaPlanner中处理过约束规划的两种核心策略:使用可空(nullable)规划变量和引入虚拟值。我们将对比这两种方法在资源分配、约束评估和问题归属方面的差异,并提供何时选择哪种策略的指导,帮助开发者根据实际业务需求构建高效且符合逻辑的解决方案。 理解过约束规划 在资源规划问题中,…

    2026年9月28日 • 用户投稿
    100
  • 豆包AI生成产品需求文档的技巧 快速梳理功能要点的指南

    豆包AI生成产品需求文档的技巧 快速梳理功能要点的指南豆包AI生成产品需求文档的技巧 快速梳理功能要点的指南豆包AI生成产品需求文档的技巧 快速梳理功能要点的指南豆包AI生成产品需求文档的技巧 快速梳理功能要点的指南

    写需求文档需明确目标用户与场景,如面向远程办公小团队的任务管理工具;分步骤提问细化功能模块,避免一次性输出整篇prd;结合模板结构引导ai生成格式化内容;最后人工审核确保逻辑闭环与业务适配。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 写…

    2026年9月28日 • 用户投稿
    000
  • Claude可以解读脑部fMRI数据吗 Claude神经影像分析医学应用

    Claude可以解读脑部fMRI数据吗 Claude神经影像分析医学应用Claude可以解读脑部fMRI数据吗 Claude神经影像分析医学应用Claude可以解读脑部fMRI数据吗 Claude神经影像分析医学应用Claude可以解读脑部fMRI数据吗 Claude神经影像分析医学应用

    claude不能直接分析脑部fmri数据,1. 因为其设计用于文本处理而非图像分析;2. 医学影像需专业软件如fsl、spm或深度学习模型处理;3. claude可解释术语、梳理流程、推荐资源及辅助写代码;4. 在医学应用中ai模型专用于分类预测,而claude仅能作为助手;5. 研究人员可用其理清…

    2026年9月28日 • 用户投稿
    100
  • OptaPlanner 过约束规划:理解与应用虚拟值策略

    OptaPlanner 过约束规划:理解与应用虚拟值策略OptaPlanner 过约束规划:理解与应用虚拟值策略OptaPlanner 过约束规划:理解与应用虚拟值策略OptaPlanner 过约束规划:理解与应用虚拟值策略

    本文深入探讨OptaPlanner在处理过约束规划场景时的两种核心策略:利用nullable=true和引入“虚拟值”。我们将详细解析这两种方法的工作原理、适用场景、配置方式及约束设计,旨在帮助开发者根据实际业务需求,高效地解决资源不足问题,实现最优或次优的规划结果。 OptaPlanner 过约束…

    2026年9月28日 • 用户投稿
    100
  • MySQL中买菜系统的商品规格表设计指南

    MySQL中买菜系统的商品规格表设计指南MySQL中买菜系统的商品规格表设计指南MySQL中买菜系统的商品规格表设计指南MySQL中买菜系统的商品规格表设计指南

    MySQL中买菜系统的商品规格表设计指南 在买菜系统中,商品规格表的设计十分重要,它用于记录商品的各种规格信息,例如重量、大小、颜色等等。一个良好设计的商品规格表能够使系统具备更强大的查询和筛选能力,提升系统的性能和用户体验。本文将为您提供一些指导和具体的代码示例,帮助您设计出高效可靠的MySQL商…

    2026年9月28日 • 用户投稿
    000
  • 如何通过Elser AI Comics生成适合印刷的高分辨率漫画作品?

    如何通过Elser AI Comics生成适合印刷的高分辨率漫画作品?如何通过Elser AI Comics生成适合印刷的高分辨率漫画作品?如何通过Elser AI Comics生成适合印刷的高分辨率漫画作品?如何通过Elser AI Comics生成适合印刷的高分辨率漫画作品?

    要生成适合印刷的高分辨率漫画作品,关键在于调整elser ai comics的输出尺寸、dpi和细节控制。1. 设置画布尺寸为实际打印大小,并将dpi调至300;2. 使用超分工具提升清晰度而非直接拉伸;3. 选择适合印刷的风格并优化提示词以增强线条与背景清晰度;4. 分层输出人物、背景和特效以便后…

    2026年9月28日 • 用户投稿
    000
  • MySQL如何监控数据库连接数 连接池使用率与连接泄漏检测

    MySQL如何监控数据库连接数 连接池使用率与连接泄漏检测MySQL如何监控数据库连接数 连接池使用率与连接泄漏检测MySQL如何监控数据库连接数 连接池使用率与连接泄漏检测MySQL如何监控数据库连接数 连接池使用率与连接泄漏检测

    数据库连接数监控、连接池使用率跟踪及连接泄漏检测至关重要。1. 使用show status命令监控mysql连接数,如show status like ‘threads_connected’,并集成到prometheus和grafana中可视化;2. 连接池监控依赖具体技术如…

    2026年9月28日 • 用户投稿
    000
  • OptaPlanner 过约束规划:理解虚拟值与可空变量的策略选择

    OptaPlanner 过约束规划:理解虚拟值与可空变量的策略选择OptaPlanner 过约束规划:理解虚拟值与可空变量的策略选择OptaPlanner 过约束规划:理解虚拟值与可空变量的策略选择OptaPlanner 过约束规划:理解虚拟值与可空变量的策略选择

    本文深入探讨 OptaPlanner 中处理过约束规划的两种核心策略:使用可空规划变量(nullable=true)和引入虚拟值。我们将详细阐述这两种方法的适用场景、实现机制及其对解决方案的影响,并通过中等约束(Medium Constraint)的运用,帮助您根据实际业务需求选择最合适的规划策略,…

    2026年9月28日 • 用户投稿
    100
  • 想将 AI 汽车保养工具与豆包联用了解保养知识?详细步骤​

    想将 AI 汽车保养工具与豆包联用了解保养知识?详细步骤​想将 AI 汽车保养工具与豆包联用了解保养知识?详细步骤​想将 AI 汽车保养工具与豆包联用了解保养知识?详细步骤​想将 AI 汽车保养工具与豆包联用了解保养知识?详细步骤​

    想将 ai 汽车保养工具与豆包联用了解保养知识,可以按照以下步骤操作:1. 明确需求,如日常保养周期、故障码解读等;2. 使用豆包查询通用保养知识,例如更换机油周期或刹车片判断方法;3. 利用 ai 汽车保养工具进行个性化分析,输入 vin 码或行驶数据获取专属建议;4. 结合两者使用技巧,如记录问…

    2026年9月28日 • 用户投稿
    000
  • MySQL 实现点餐系统的库存盘点功能

    MySQL 实现点餐系统的库存盘点功能MySQL 实现点餐系统的库存盘点功能MySQL 实现点餐系统的库存盘点功能MySQL 实现点餐系统的库存盘点功能

    MySQL 实现点餐系统的库存盘点功能 随着餐饮行业的不断发展,一种有效、高效的点餐系统已经成为餐厅经营的必要条件。而针对点餐系统的库存盘点功能的实现,MySQL 数据库是一种非常方便和高效的选择。 本文将介绍如何在 MySQL 数据库中实现点餐系统的库存盘点功能,以及具体的代码示例。 一、数据库设…

    2026年9月28日 • 用户投稿
    100
  • 快速入门Flink (7) —— 小白都喜欢看的Flink流处理之DataSources和DataSinks

    快速入门Flink (7) —— 小白都喜欢看的Flink流处理之DataSources和DataSinks快速入门Flink (7) —— 小白都喜欢看的Flink流处理之DataSources和DataSinks快速入门Flink (7) —— 小白都喜欢看的Flink流处理之DataSources和DataSinks快速入门Flink (7) —— 小白都喜欢看的Flink流处理之DataSources和DataSinks

    不知不觉,这已经是快速入门flink系列的第7篇博客了。早在第4篇博客中,博主就已经为大家介绍了在批处理中,数据输入data sources 与数据输出data sinks的各种分类(传送门:flink批处理的datasources和datasinks)。但是大家是否还记得flink的概念?flin…

    2026年9月28日 • 用户投稿
    100
  • 使用 Java Map 聚合 List 中重复元素的数值

    使用 Java Map 聚合 List 中重复元素的数值使用 Java Map 聚合 List 中重复元素的数值使用 Java Map 聚合 List 中重复元素的数值使用 Java Map 聚合 List 中重复元素的数值

    本文介绍了如何使用 Java Map 结构有效地聚合 List 中具有相同类型(Type)的元素的数值,例如金额(Amount)和数量(Quantity)。通过将 List 转换为 Map,并利用 compute 方法或 Stream API 的 toMap 操作,可以避免手动循环和比较,从而简化代…

    2026年9月28日 • 用户投稿
    000
  • Java编程:计算用户输入字符串的词汇属性百分比

    Java编程:计算用户输入字符串的词汇属性百分比Java编程:计算用户输入字符串的词汇属性百分比Java编程:计算用户输入字符串的词汇属性百分比Java编程:计算用户输入字符串的词汇属性百分比

    本教程详细介绍了如何在Java中接收用户输入字符串,并利用正则表达式计算符合特定词汇属性(如纯字母单词、首字母大写单词)的字符串百分比。文章涵盖了输入验证、数据存储、正则表达式匹配以及模块化计数方法,旨在提供一个清晰、高效的解决方案。 1. 教程概述与核心挑战 在许多应用场景中,我们需要从用户那里获…

    2026年9月28日 • 用户投稿
    000
  • 豆包无需安装秒启动 豆包AI智能助手即时响应

    豆包无需安装秒启动 豆包AI智能助手即时响应豆包无需安装秒启动 豆包AI智能助手即时响应豆包无需安装秒启动 豆包AI智能助手即时响应豆包无需安装秒启动 豆包AI智能助手即时响应

    全民k歌:歌房舞台效果开启指南 腾讯出品的全民K歌,以其智能打分、修音、混音和专业音效等功能,深受K歌爱好者喜爱。本教程将详细指导您如何在全民K歌歌房中开启炫酷的舞台效果。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 步骤: 打开全民K歌…

    2026年9月28日 • 用户投稿
    000

发表回复

登录后才能评论
关注微信