invoiceninja/inspector

简化数据库记录管理

v3.0 2024-06-04 12:31 UTC

This package is auto-updated.

Last update: 2024-09-04 13:02:41 UTC


README

inspector logo

简化数据库记录管理。Inspector 允许您处理 CRUD 而不占用您的前端。

示例

$inspector = new \InvoiceNinja\Inspector\Inspector();

// List all tables in the database
$tables = $inspector->getTableNames();

// Get table columns
$columns = $inspector->getTableColumns('users');

安装

您可以通过 composer 安装此包

composer require invoiceninja/inspector

需求

  • Laravel 8.x
  • PHP 7.4+

哲学

Inspector 并不是您常见的管理员面板。它旨在作为管理员面板的一部分使用。也就是说,我们希望它既轻量级又不会占用您的前端。

它不关心您的 CSS 框架,您是否使用 Livewire,因为您负责将其集成。不必担心,它非常简单。

使用方法

正如我们之前所说,您负责集成 Inspector,但我们将在这里提供最简单的示例。

首先创建一个控制器,我们将命名为 TableController

php artisan make:controller TableController

显示数据库中的表格

public function index(\InvoiceNinja\Inspector\Inspector $inspector)
{
    return view('tables.index', [
        'tables' => $inspector->getTableNames(),
    ]);
}

现在,要显示所有这些表格,您可以创建自己的循环。为了加快速度,我们提供了一些预构建组件。

<x-inspector-tables :tables="$tables" />

这将显示数据库中所有表格的预览。

太棒了,让我们为单个表格页面创建链接。我们可以通过在组件中传递 show-route-name 参数来完成此操作。

<x-inspector-tables :tables="$tables" show-route-name="tables.show" />

注意:路由名称是可选的。我们使用资源控制器,遵循 Laravel 规范。

这样做后,我们应该在我们的表格中获得一个新的“查看”操作。

显示表格列

预览表格列及其类型可能对您有用。为了实现这一点,我们可以使用 getTableColumns 方法。

public function show(string $table, \InvoiceNinja\Inspector\Inspector $inspector)
{
    return view('tables.show', [
        'columns' => $inspector->getTableColumns($table),
    ]);
}
<x-inspector-columns :columns="$columns" />

这将生成一个包含所有列/类型的表格。

显示表格记录

要显示表格记录,我们可以使用 getTableRecords 方法。

public function show(string $table, \InvoiceNinja\Inspector\Inspector $inspector)
{
    return view('tables.show', [
        'table' => $inspector->getTableSchema($table),
        'columns' => $inspector->getTableColumns($table),
        'records' => $inspector->getTableRecords($table),
    ]);
}
<x-inspector-records 
    :table="$table" 
    :columns="$columns"
    :records="$records" /> 

要生成特定记录的链接,请传递 show-route-name

<x-inspector-records 
    :table="$table" 
    :columns="$columns"
    :records="$records"
    show-route-name="tables.edit" /> 

这将生成类似这样的 URL:/tables/{table}/edit?id=1

显示并编辑表格中的行

显示特定行的页面非常简单。我们可以使用 getTableRecord 方法。

public function edit(string $table, \Illuminate\Http\Request $request, \InvoiceNinja\Inspector\Inspector $inspector)
{
    return view('tables.edit', [
        'table' => $inspector->getTableSchema($table),
        'columns' => $inspector->getTableColumns($table),
        'record' => $inspector->getTableRecord($table, $request->query('id')),
    ]);
}
<x-inspector-record 
    :record="$record" 
    :table="$table"
    :columns="$columns"
    update-route-name="tables.update" />

这将生成包含所有列作为输入字段及其值作为输入值的表单。

注意:update-route-name可选的

更新表格行

剩下的一件事是更新表格行。正如您可能猜到的,Inspector 提供了一个帮助方法 - updateTableRecord

public function update(string $table, \Illuminate\Http\Request $request, \InvoiceNinja\Inspector\Inspector $inspector)
{
    $inspector->validate($request, $table);

    $success = $inspector->updateTableRecord($table, $request->query('id'), $request);

    if ($success) {
        return back()->withMessage('Successfully updated the record.');
    }

    return back()->withMessage('Oops, something went wrong.');
}

配置

我们尽最大努力使 Inspector 尽可能可配置。要调整配置文件,请确保首先发布它。

php artisan vendor:publish --provider="InvoiceNinja\Inspector\InspectorServiceProvider"

配置发布后,您可以控制可见表格以及隐藏的组件类,并按需修改它们。

可用方法

  • setConnectionName(string $connectionName): self - 设置数据库连接。默认情况下,它将获取您的默认应用程序连接。

  • getConnectionName(): string - 获取当前连接名称。

  • getSchemaManager(): Doctrine\DBAL\Schema\AbstractSchemaManager - 获取当前架构管理器实例。

  • getTableNames(): array - 获取数据库中表名称的列表。

  • getTableSchema(string $table): Doctrine\DBAL\Schema\Table - 获取表的 Table 表示。

  • getTableColumns(string $table): array - 获取指定表的全部列。

  • getTable(string $table): Illuminate\Database\Query\Builder - 查询构建器的表实例。

  • getTableRecords(string $table, array $columns = ['*']): Illuminate\Support\Collection - 获取指定表的全部记录。

  • getTableRecord(string $table, string $value, string $column = 'id'): mixed - 获取指定表的单个记录。

  • updateTableRecord(string $table, string $id, Request $request, string $column = 'id'): bool - 更新指定表行。

  • validate(Request $request, string $table) - 验证特定请求。

贡献

请参阅CONTRIBUTING以获取详细信息。

安全

如果您发现任何与安全相关的问题,请通过[email protected]发送电子邮件,而不是使用问题跟踪器。

致谢

许可证

MIT许可(MIT)。请参阅许可文件以获取更多信息。