本文讲解如何在 Laravel 中避免 Blade 模板中嵌套循环与字符串解析,改用数据库层精准查询(WHERE FIND_IN_SET)来高效获取含指定分类 ID 的前 N 条记录,兼顾性能与可读性。 本文讲解如何在 laravel 中避免 blade 模板中嵌套循环与字符串解析,改用数据库层精准查询(find_in_set)来高效获取含指定分类 id 的前 n 条记录,兼顾性能与可读性。在 Laravel 开发中,当数据表字段以逗号分隔形式存储多个 ID(如 cat = '3,4'),直接在 Blade 模板中使用 explode() + 嵌套 @foreach 进行匹配和限流,不仅逻辑冗余、可读性差,更会因全量加载数据导致严重性能瓶颈------尤其当 blog 表数据量增大时,cats-\>take(5) 仅作用于已取出的全部记录,无法提前过滤,实际仍需遍历所有行才能凑齐 5 条匹配结果。根本解法:将筛选逻辑下推至数据库层MySQL 提供的 FIND_IN_SET(str, strlist) 函数专为处理此类逗号分隔字符串设计,可高效判断目标值是否存在于列表中。配合 Laravel 的 whereRaw() 和 limit(),我们可在查询阶段完成「匹配分类 ID=4」+「限制返回 5 条」双重操作,极大减少传输与内存开销。? 推荐控制器写法(CategoryController.php):public function CAT(){ catSelect = '4'; // 可动态传入,如 request('cat') cats = DB::table('blog') -\>whereRaw("FIND_IN_SET(?, cat)", \[catSelect]) ->orderBy('id', 'DESC') ->limit(5) ->get(); return view('frontend.category', 'cats' =\> $cats, 'cat_select' =\> $catSelect );}? 对应 Blade 模板(category.blade.php)保持极简: ARTi.PiCS ARTi.PiCS是一款由AI驱动的虚拟头像生产器,可以生成200多个不同风格的酷炫虚拟头像
相关推荐
oradh2 小时前
Oracle TX 锁 Mode 4(Share)问题排查总结yi.Ist2 小时前
数据定义语言-DDL操作傲笑风3 小时前
【openvino】tinybert基于openvino服务化部署(四)维基框架3 小时前
WIKI 知识库 v1.1.1 正式发布2601_963282774 小时前
工程项目、政企采购为什么优先选择对讲机批量采购?Doraemomo4 小时前
SQLite数据库云贝教育-郑老师4 小时前
MySQL 的“黑匣子“:Performance Schema 把数据库内部变成一张可查的表这个DBA有点耶6 小时前
同城双活落地的三座山:网络延迟、脑裂预防、反向同步青春之我_XP6 小时前
MySQL 常用日期函数 实战指南