如何用TABLE GATEWAY ZF2显示SHOW TABLE sql

时间:2015-02-01 11:33:59

标签: php mysql sql zend-framework2

如何在Zend Framework 2中使用tablegateway'显示表'?

我想用tablegateway执行“show table”sql,我能做到吗?

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

“SHOW CREATE TABLE {table_name}”

拥有创建表代码。

E.G。

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

我有以这种方式声明的表模型

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()
    {
        ?????
    }
}

如何获取show create table?

1 个答案:

答案 0 :(得分:1)

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

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

这将为您提供表的原始结构信息,但不会自动为您构造CREATE TABLE语句。由于您提到的SHOW CREATE TABLE查询不受普遍支持,因此您有两种选择:

  • 如果您只需要支持MySQL / MariaDB,那么最快的途径就是the query method of the adapter

  • 如果您希望它是可移植的,那么您需要使用我上面描述的方法之一并将其与Zend\Db\Sql\Ddl组合以构建跨平台的CREATE TABLE语句。