Doctrine2:基于实体类生成实体



我想生成许多具有不同名称的相同表。是否可以使用映射创建一个实体类,例如(http://symfony.com/doc/current/book/doctrine.html#add-mapping-information),而不是运行一个带有参数名称的命令来创建表格中的表格?我已经完成了一个解决方案,但它不是基于实体类。

在构造函数中:

public function __construct()
{
    $this->schema = new DoctrineDBALSchemaSchema();
    $this->config = new DoctrineDBALConfiguration();
    $this->connection = DriverManager::getConnection($this->connectionParams, $this->config);
    $this->queryBuilder = $this->connection->createQueryBuilder();
    $this->myPlatform = new MySqlPlatform();
    $this->comparator = new DoctrineDBALSchemaComparator();
}

比创建函数:

public function setTable($name)
{
$myTable = $this->schema->createTable($name);
$myTable->addColumn("id", "integer", array("unsigned" => true));
$myTable->addColumn("name", "string", array("length" => 32));
$myTable->setPrimaryKey(array("id"));
$myTable->addUniqueIndex(array("name"));
$queries = $this->schema->toSql($this->myPlatform);
$sm = $this->connection->getSchemaManager();
$fromSchema = $sm->createSchema();
$toSchema = $this->schema;
$schemaDiff = $this->comparator->compare($fromSchema, $toSchema);
$queries = $schemaDiff->toSql($this->myPlatform);
$sql = $schemaDiff->toSaveSql($this->myPlatform);
foreach ($sql as $sentence) {
        $this->connection->exec($sentence);
    }
}

是否还有其他基于一个类带有映射的类和带有参数$ table_name的命令的解决方案,以创建具有不同名称的同一表?我正在使用Symfony 3与学说2。

实体类是应该与表相通用的对象。我认为更好的方法是使一个看起来完全像您的EntityAbstractClass,但没有@orm table()注释,然后创建多个扩展您的EntityAbstractClass的实体。

抽象类:

abstract class EntityAbstractClass() {
    // your fields here
}
/**
* @ORMTable(name="first_table")
**/
class FirstEntityClass extends EntityAbstractClass {
}
/**
* @ORMTable(name="second_table")
**/
class SecondEntityClass extends EntityAbstractClass {
}

等等。您也可以通过保存简短文件,然后运行架构更新来编程管理。

或者不是抽象类,您可以使用特质:

trait MyEntityTrait {
    // your fields here like:
    /** @ORMColumn() **/
    private $name;
}

以及每个新实体类:

/**
* @ORMTable(name="first_table")
**/
class FirstEntityClass {
    use MyEntityTrait;
}

...

相关内容

  • 没有找到相关文章