定制 naimul/db-visualizer 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

naimul/db-visualizer

最新稳定版本:v1.0.6

Composer 安装命令:

composer require naimul/db-visualizer

包简介

Laravel Database & Code Intelligence Visualizer (N+1, Relations, Performance Analyzer)

README 文档

README

A powerful Laravel package to analyze your application models, relationships, database usage, and detect performance issues like N+1 queries, unused columns, and missing eager loading.

🚀 Features

  • 📊 Scan all Eloquent Models (App + Modules support)
  • 🔗 Auto-detect relationships
  • 🧠 Detect N+1 query risks probability
  • ❌ Find unused columns
  • ⚡ Detect missing eager loading
  • 📈 Performance scoring system (0–100)
  • 🧹 Code usage analysis
  • 🧩 Supports Laravel Modules (nwidart style)

📦 Installation

Install via Composer:

composer require naimul/db-visualizer

⚙️ Auto Service Provider

If you are using Laravel 10+, the package will auto-register.

If not, add manually:

Naimul\DbVisualizer\DbVisualizerServiceProvider::class,

🗂 Publishing Configuration

To customize the package's configuration, publish the config file with:

php artisan vendor:publish --provider="Naimul\DbVisualizer\DbVisualizerServiceProvider" --tag="dbv-config"

This will create a db-visualizer.php config file in your config directory.

🗃 Publishing Assets (Views, JS, CSS)

To publish the package's frontend resources (views, JS, CSS), run:

php artisan vendor:publish --provider="Naimul\DbVisualizer\DbVisualizerServiceProvider" --tag="dbv-resources"

This will copy the package's resources into your application's resources/vendor/db-visualizer directory for customization.

🔐 Authorization

Access to DB Visualizer is controlled via a viewDbVisualizer gate. By default, access is only granted in the local environment.

To allow access in other environments, override the gate in your AppServiceProvider:

use Illuminate\Support\Facades\Gate;

public function boot(): void
{
    // Allow authenticated admins only
    Gate::define('viewDbVisualizer', fn (?User $user) => $user?->is_admin);

    // Allow specific emails
    Gate::define('viewDbVisualizer', fn (?User $user) => in_array($user?->email, [
        'admin@example.com',
    ]));

    // Allow everyone (including unauthenticated users)
    Gate::define('viewDbVisualizer', fn (?User $user) => true);
}

Requests that fail the gate receive a 403 response. Unauthenticated users are redirected to the login page.

Important: Always declare a nullable ?User $user parameter in your gate callback. Laravel uses this to determine whether the gate supports unauthenticated (guest) access. A callback without any parameter — such as fn () => true — will not be called for guests and will redirect them to login instead.

🌐 Routes

After installation, visit:

/dbv
/dbv/data
/dbv/detail/{model}

Example:

http://your-app.test/dbv/data

📊 API Endpoints

Get all models analysis

GET /dbv/data

Search models

GET /dbv/data?search=User

Model details

GET /dbv/detail/User

🧠 What It Analyzes

✔ Models

  • Table name
  • Columns
  • Relations
  • Soft deletes

✔ Relations

  • Used / unused detection
  • N+1 query detection probability
  • Missing eager loading

✔ Columns

  • Used / unused detection

✔ Performance Score

  • Calculates score (0–100)

  • Quality labels:

    • Excellent
    • Good
    • Average
    • Poor

📈 Example Response

{
  "model": "User",
  "table": "users",
  "performance_score": 85,
  "quality_label": "Good Quality",
  "unused_columns_count": 2,
  "n_plus_one_issues": 1,
  "relations": [
    {
      "method": "posts",
      "type": "HasMany",
      "used": true,
      "n_plus_one": false
    }
  ]
}

⚡ Performance Scoring Rules

Issue Penalty
Unused relation -10
Unused column -2
N+1 issue -15
Missing eager load -10

Bonus:

  • Soft deletes: +5
  • Cache usage: +5
  • API Resource usage: +5

🛠 Requirements

  • PHP >= 8.1
  • Laravel 10, 11, 12, 13 supported

📁 Supported Structure

  • app/Models
  • Modules/*/Entities
  • Modules/*/Models
  • Blade Views scanning

🔥 Use Case

This package is useful for:

  • Optimizing large Laravel applications
  • Detecting hidden performance issues
  • Code quality auditing
  • Refactoring legacy systems
  • Interview/demo projects

🧩 Future Plans

  • N+1 Query file locate
  • eagerloading File locate
  • Performance booster

🤝 Contributing

Pull requests are welcome. For major changes, please open an issue first.

📜 License

MIT License © Open Source

⭐ Support

If you like this package, give it a ⭐ on GitHub.

统计信息

  • 总下载量: 63
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 7
  • 点击次数: 3
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 7
  • Watchers: 0
  • Forks: 2
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-04-06

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固