Доктрина, разные имена файлов, генерация разных таблиц - PullRequest
0 голосов
/ 11 декабря 2010

Я пытаюсь создать таблицы из моделей, используя метод 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 голосов
/ 12 декабря 2010

Добавление

$this->setTableName('tablename');

должно делать то, что вам нужно.Доктрина использует некоторые соглашения, чтобы идентифицировать отношения и таблицы.Обычно он угадывает имя таблицы в зависимости от класса, но я видел, как это не удавалось много раз.Установка имени таблицы должна делать то, что вы хотите.

...