aura/sqlschema

提供使用PDO从数据库读取表名和表列的设施。

2.0.3 2016-04-29 13:48 UTC

This package is auto-updated.

Last update: 2024-09-11 03:42:46 UTC


README

提供使用PDO连接从数据库读取表名和表列的设施。

前言

安装

此库需要PHP 5.3或更高版本;我们原则上推荐使用最新可用的PHP版本。它没有用户空间依赖。

可以通过Composer安装和自动加载,作为 aura/sqlschema

或者,下载一个版本 或克隆此存储库,然后要求或包含其 autoload.php 文件。

质量

Scrutinizer Code Quality Code Coverage Build Status

要运行命令行中的单元测试,请在包根目录下运行 phpunit。(这需要PHPUnit 作为 phpunit 可用。)

此库试图遵守 PSR-1PSR-2PSR-4。如果您发现符合性疏忽,请通过拉取请求发送补丁。

社区

要提问、提供反馈或与其他Aura社区进行交流,请加入我们的 Google Group、关注 @auraphp on Twitter 或在Freenode上的 #auraphp 上与我们聊天。

入门

实例化

使用匹配的 PDO 实例实例化特定驱动程序的schema对象

<?php
use Aura\SqlSchema\ColumnFactory;
use Aura\SqlSchema\MysqlSchema; // for MySQL
use Aura\SqlSchema\PgsqlSchema; // for PostgreSQL
use Aura\SqlSchema\SqliteSchema; // for Sqlite
use Aura\SqlSchema\SqlsrvSchema; // for Microsoft SQL Server
use PDO;

// a PDO connection
$pdo = new PDO(...);

// a column definition factory
$column_factory = new ColumnFactory();

// the schema discovery object
$schema = new MysqlSchema($pdo, $column_factory);
?>

获取表列表

要获取数据库中的表列表,请执行 fetchTableList()

<?php
$tables = $schema->fetchTableList();
foreach ($tables as $table) {
    echo $table . PHP_EOL;
}
?>

获取列信息

要获取表中列的信息,请执行 fetchTableCols()

<?php
$cols = $schema->fetchTableCols('table_name');
foreach ($cols as $name => $col) {
    echo "Column $name is of type "
       . $col->type
       . " with a size of "
       . $col->size
       . PHP_EOL;
}
?>

每个列描述是一个具有以下属性的 Column 对象

  • name: (string) 列名

  • type: (string) 列数据类型。数据类型与数据库报告的相同。

  • size: (int) 列大小。

  • scale: (int) 列的十进制位数,如果有。

  • notnull: (bool) 列是否标记为 NOT NULL

  • default: (mixed) 列的默认值。注意,有时这将是 null,如果底层数据库将自动设置时间戳。

  • autoinc: (bool) 列是否自动递增?

  • primary: (bool) 列是否是主键的一部分?