如何使用 TABLE GATEWAY ZF2 显示 TABLE sql

How SHOW TABLE sql with TABLE GATEWAY ZF2

如何在 Zend Framework 2 中使用 table 网关 'SHOW TABLE'?

我想用 table 网关执行 "show table" sql,我可以吗?

在sql中我可以用这段代码查询数据库

"SHOW CREATE TABLE {table_name}"

获得创建 table 代码。

CREATE TABLE `table_name` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `date_insert` datetime NOT NULL,
 `date_update` datetime NOT NULL,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin

我有这样声明的table模型

class MyTable
{
    protected $tableGateway;

    public function __construct(TableGateway $tableGateway)
    {
        $this->tableGateway = $tableGateway;
    }

    public function fetchAll($where = false)
    {
        $select = $this->tableGateway->getSql()->select();

        if ($where)
            $select->where($where);

        $resultSet = $this->tableGateway->selectWith($select);
        return $resultSet;
    }

    public function getShowCreateTable()
    {
        ?????
    }
}

如何创建节目 table?

Zend\Db\Metadata 是您要查找的组件。它允许您提取有关适配器连接到的数据库结构的数据。

还有一个您可以启用的 TableGateway 功能,它将使用元数据信息填充 TableGateway 实例。 See the docs for it in this section

这将为您提供 table 的原始结构信息,但不会自动为您构建 CREATE TABLE 语句。由于您提到的 SHOW CREATE TABLE 查询未得到普遍支持,您有两个选择:

  • 如果您只需要支持 MySQL/MariaDB,那么找到您要查找的内容的最快路径是 the query method of the adapter

  • 如果你想让它成为 portable 那么你需要使用我上面描述的方法之一并将它与 Zend\Db\Sql\Ddl 结合起来构建一个交叉平台 CREATE TABLE 语句。