相关疑难解决方法(0)

在迁移文件中使用EntityManager

我有这个代码,但不起作用:

<?php

namespace Application\Migrations;

use Doctrine\DBAL\Migrations\AbstractMigration,
    Doctrine\DBAL\Schema\Schema;

/**
 * Auto-generated Migration: Please modify to your need!
 */
class Version20131021150555 extends AbstractMigration
{

    public function up(Schema $schema)
    {
        // this up() migration is auto-generated, please modify it to your needs
        $this->abortIf($this->connection->getDatabasePlatform()->getName() != "mysql", "Migration can only be executed safely on 'mysql'.");

        $this->addSql("ALTER TABLE person ADD tellphone LONGTEXT DEFAULT NULL");

        $em = $em = $this->getDoctrine()->getEntityManager();
        $persons = $em->getRepository('AutogestionBundle:Person')->fetchAll();

        foreach($persons as $person){
            $person->setTellPhone($person->getCellPhone());
            $em->persist($person);                                                                            
        }
        $em->flush(); 
    }

    public function down(Schema $schema)
    {
        // …
Run Code Online (Sandbox Code Playgroud)

migration symfony doctrine-orm

21
推荐指数
3
解决办法
1万
查看次数

如何为数据库(特别是Symfony)存储所需的"基础"或"初始"数据?

我使用doctrine迁移包来跟踪数据库结构中的更改.我想确保在为我的应用程序部署/添加新服务器时:

  • (A)数据库架构是最新的(学说:迁移:迁移)
  • (B)数据库始终包含预定义的数据集

对于(B),一个很好的例子是角色.我希望始终存在一组特定的角色.我意识到数据库迁移是可能的,但我不喜欢将模式更改与数据更改混合在一起的想法.此外,如果我使用MySql迁移,我将不得不为我的测试数据库创建一个等效的Sqlite迁移.

我知道的另一个选择是数据夹具.然而,通过阅读文档,我感觉夹具更适合加载测试数据.此外,如果我更改了角色名称,我不知道如何使用fixture更新它(因为它们要么在加载或追加之前删除数据库中的所有数据).如果我使用append,那么唯一键也是一个问题.

我正在考虑创建一些带有一组配置文件的命令,并确保某些表总是处于与配置文件匹配的一致状态 - 但如果存在另一个选项,我当然希望使用它.

处理将所需数据加载到数据库中的最佳方法是什么?

database symfony doctrine-orm

11
推荐指数
1
解决办法
1515
查看次数

标签 统计

doctrine-orm ×2

symfony ×2

database ×1

migration ×1