如何在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?
答案 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语句。