Doctrine,不同的文件名,不同的表生成

时间:2010-12-11 16:24:11

标签: php doctrine

我正在尝试使用Doctrine的 createTablesFromModels 方法从模型创建表。我有一个/model文件夹,我保留了我的模型,但它取决于文件名如何生成表。

在3个文件中,我有以下内容:

class Item extends Doctrine_Record {

public function setTableDefinition() {
    $this->hasColumn('nombre', 'string', 45, array(
        'notnull' => true
    ));
    $this->hasColumn('enunciado', 'string', 90, array(
        'notnull' => true
    ));
    $this->hasColumn('imagen_reposo', 'string', 90);
    $this->hasColumn('imagen_movimiento', 'string', 90);
}

public function setUp() {
    $this->hasMany('Prueba as Pruebas', array(
        'refClass' => 'ItemPrueba',
        'local' => 'item_id',
        'foreign' => 'prueba_id'
    ));
}
}

class Prueba extends Doctrine_Record {

public function setTableDefinition() {
    $this->hasColumn('nombre', 'string', 45, array(
        'notnull' => true
    ));
    $this->hasColumn('consigna', 'clob', 65535);
    $this->hasColumn('consentimiento', 'clob', 65535);
    $this->hasColumn('codigo', 'string', 45);
}

public function setUp() {
    $this->hasMany('Item as Items', array(
        'refClass' => 'ItemPrueba',
        'local' => 'prueba_id',
        'foreign' => 'item_id'
    ));
}
}

class ItemPrueba extends Doctrine_Record {

public function setTableDefinition() {
    $this->hasColumn('item_id', 'integer', null, array(
        'primary' => true
    ));
    $this->hasColumn('prueba_id', 'integer', null, array(
        'primary' => true
    ));
}
}

我只是想做多对多的关系。 当我使用这个名字时:

/models/tableone.php
/models/tabletwo.php
/models/tableoneTabletwo.php

它会创建以下表 关系。

http://i52.tinypic.com/25hpdo2.png

当我使用这个名字时:

/models/item.php
/models/prueba.php
/models/itemPrueba.php

它会创建没有任何关系

的表格

更多信息: 我正在使用codeIgniter框架并将Doctrine 1.2添加为插件

1 个答案:

答案 0 :(得分:0)

添加

$this->setTableName('tablename');

应该做你需要的。 Doctrine使用一些约定来标识关系和表。它通常根据类猜测表的名称,但我已经看过多次失败。设置表名应该符合你的要求。