invoiceninja / inspector
简化数据库记录管理
Requires
- php: ^8.2
- doctrine/dbal: ^4.0
- illuminate/support: ^11.0
Requires (Dev)
- orchestra/testbench: ^9.1
- phpunit/phpunit: ^11.1
README
简化数据库记录管理。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)。请参阅许可文件以获取更多信息。