Php Zend 3&x2B;条令2:创建表格?

Php Zend 3&x2B;条令2:创建表格?,php,mysql,symfony,doctrine-orm,doctrine,Php,Mysql,Symfony,Doctrine Orm,Doctrine,我一直在想谷歌上的一些文章,这些文章试图“找到一种方法”使用条令创建表。我需要创建“临时表”,因为我正在处理的项目将有很多“临时统计数据”,我不需要所有的信息,只是在某一点上的“总数”。无论如何,MYSQL“临时”表就是“解决方案” 但是,我找不到任何一条信息,它向您展示了如何使用条令创建表 我理解条令需要创建表和实体,但必须有一种“动态”创建表的方法,或者一种运行原始查询的方法 下面是我尝试过的一段代码,当然失败了: $schema= new \Doctrine\DBAL\Schema\Sch

我一直在想谷歌上的一些文章,这些文章试图“找到一种方法”使用条令创建表。我需要创建“临时表”,因为我正在处理的项目将有很多“临时统计数据”,我不需要所有的信息,只是在某一点上的“总数”。无论如何,MYSQL“临时”表就是“解决方案”

但是,我找不到任何一条信息,它向您展示了如何使用条令创建表

我理解条令需要创建表和实体,但必须有一种“动态”创建表的方法,或者一种运行原始查询的方法

下面是我尝试过的一段代码,当然失败了:

$schema= new \Doctrine\DBAL\Schema\Schema();

        //if (!$schema->tablesExist('post'))
        //{
            $table= new \Doctrine\DBAL\Schema\Table('post');
            $table->addColumn('id', 'integer', ['autoincrement'=>true]);
            $table->addColumn('title', 'text', ['notnull'=>true]);
            $table->addColumn('content', 'text', ['notnull'=>true]);
            $table->addColumn('status', 'integer', ['notnull'=>true]);
            $table->addColumn('date_created', 'datetime', ['notnull'=>true]);
            $table->setPrimaryKey(['id']);
            $table->addOption('engine' , 'InnoDB');

            $schema->createTable($table); // save to DB
        //}
是否有人可以向我澄清,表格是否可以或不能用条令创建


非常感谢。

您编写的代码称为迁移,如果迁移安装和配置正确,可以使用以下命令执行:

php public/index.php migrations:migrate
如果希望在不迁移的情况下创建表,只需首先创建实体,配置映射(使用注释或您选择的任何其他类型),然后使用以下命令强制创建架构:

php public/index.php doctrine:schema:update --force
如果希望运行原始查询,可以:

$this->entityManager->getConnection()->executeQuery('SQL Query', $optionalParams);

您编写的代码称为迁移,如果迁移已正确安装和配置,则可以使用以下命令执行:

php public/index.php migrations:migrate
如果希望在不迁移的情况下创建表,只需首先创建实体,配置映射(使用注释或您选择的任何其他类型),然后使用以下命令强制创建架构:

php public/index.php doctrine:schema:update --force
如果希望运行原始查询,可以:

$this->entityManager->getConnection()->executeQuery('SQL Query', $optionalParams);

我根本不能用控制台。我需要“动态”创建表,例如:table_session_12345、table_session_453545,如果这有意义的话。。。所以我不知道如何才能在手之前创建实体。原则是关于将PHP对象映射到SQL表,没有实体就不能有一些随机表。我觉得你的案子很奇怪。您总是可以运行原始查询,尽管它确实很奇怪,因为项目的这个“部分”有很多统计数据,过了一段时间后,它需要一个“整体”。一直写“统计”表不是一个好主意,因为它会在很短的时间内快速增长……然后你选择了错误的工具,这是一个根本不应该使用原则的情况。而是隐藏在数据库适配器后面的原始SQL查询。是的,您是正确的,但是“$this->entityManager->getConnection()->executeQuery”实际上完成了任务:)我可以运行我想要的任何查询。非常感谢,非常好的回答!我根本不能用控制台。我需要“动态”创建表,例如:table_session_12345、table_session_453545,如果这有意义的话。。。所以我不知道如何才能在手之前创建实体。原则是关于将PHP对象映射到SQL表,没有实体就不能有一些随机表。我觉得你的案子很奇怪。您总是可以运行原始查询,尽管它确实很奇怪,因为项目的这个“部分”有很多统计数据,过了一段时间后,它需要一个“整体”。一直写“统计”表不是一个好主意,因为它会在很短的时间内快速增长……然后你选择了错误的工具,这是一个根本不应该使用原则的情况。而是隐藏在数据库适配器后面的原始SQL查询。是的,您是正确的,但是“$this->entityManager->getConnection()->executeQuery”实际上完成了任务:)我可以运行我想要的任何查询。非常感谢,非常好的回答!