本文介绍如何在 laravel 中无需为每个模型单独编写 count() 查询,而是通过原生 sql 或 eloquent 方式高效获取当前数据库中所有数据表的行数及总计,显著减少重复代码。
在 Laravel 项目(尤其是后台管理、数据库监控或运维看板)中,常需快速展示各数据表的记录数量。若按传统方式为每个模型手动调用 Model::count() 并拼接条件(如 User::where(‘is_admin’, ‘yes’)->count()),不仅代码冗长、难以维护,还易因表结构变更引发遗漏或错误。
更优雅的解决方案是绕过 Eloquent 模型层,直接查询 MySQL 的 INFORMATION_SCHEMA.TABLES 系统视图——该视图实时存储了数据库中各表的元信息,其中 TABLE_ROWS 字段即为近似行数(InnoDB 下为估算值,MyISAM 下为精确值,对统计类场景完全适用)。
✅ 推荐实现方式(Laravel 风格)
在控制器中使用 DB::select() 执行系统查询: