Doctrine 1.2 не создает таблицы из моделей в Zend Framework - PullRequest
0 голосов
/ 21 августа 2011

Я пытаюсь создать таблицы из моделей, используя:

Doctrine::createTablesFromModels(APPLICATION_PATH . '/models');

В отличие от генерации моделей из файла Yaml, который работал просто отлично, это ничего не делает.Нет ошибок, нет предупреждений, ничего.Таблицы не созданы.Если я запускаю приведенный ниже код, он тоже работает нормально:

Doctrine::dropDatabases();

Таким образом, соединение с базой данных работает и права доступа настроены правильно.Я погуглил его десятью разными способами, не получив никаких полезных ответов, поэтому сейчас я спрашиваю здесь.

Вот один из моих базовых классов:

<?php

/**
 * BaseUser
 * 
 * This class has been auto-generated by the Doctrine ORM Framework
 * 
 * @property string $email
 * @property string $password
 * @property string $firstName
 * @property string $lastName
 * @property string $profileText
 * @property integer $role_id
 * @property Role $Role
 * @property Doctrine_Collection $UserDetail
 * @property Doctrine_Collection $CalendarItem
 * @property Doctrine_Collection $NewsItem
 * @property Doctrine_Collection $Link
 * @property Doctrine_Collection $TwitterUser
 * @property Doctrine_Collection $Tweet
 * 
 * @package    ##PACKAGE##
 * @subpackage ##SUBPACKAGE##
 * @author     ##NAME## <##EMAIL##>
 * @version    SVN: $Id: Builder.php 6820 2009-11-30 17:27:49Z jwage $
 */
abstract class BaseUser extends Doctrine_Record
{
    public function setTableDefinition()
    {
        $this->setTableName('user');
        $this->hasColumn('email', 'string', 255, array(
             'type' => 'string',
             'length' => '255',
             ));
        $this->hasColumn('password', 'string', 255, array(
             'type' => 'string',
             'length' => '255',
             ));
        $this->hasColumn('firstName', 'string', 255, array(
             'type' => 'string',
             'length' => '255',
             ));
        $this->hasColumn('lastName', 'string', 255, array(
             'type' => 'string',
             'length' => '255',
             ));
        $this->hasColumn('profileText', 'string', null, array(
             'type' => 'string',
             'length' => '',
             ));
        $this->hasColumn('role_id', 'integer', 8, array(
             'type' => 'integer',
             'length' => 8,
             ));

        $this->option('collate', 'utf8_unicode_ci');
        $this->option('charset', 'utf8');
    }

    public function setUp()
    {
        parent::setUp();
        $this->hasOne('Role', array(
             'local' => 'role_id',
             'foreign' => 'id'));

        $this->hasMany('UserDetail', array(
             'local' => 'id',
             'foreign' => 'user_id'));

        $this->hasMany('CalendarItem', array(
             'local' => 'id',
             'foreign' => 'user_id'));

        $this->hasMany('NewsItem', array(
             'local' => 'id',
             'foreign' => 'user_id'));

        $this->hasMany('Link', array(
             'local' => 'id',
             'foreign' => 'user_id'));

        $this->hasMany('TwitterUser', array(
             'local' => 'id',
             'foreign' => 'user_id'));

        $this->hasMany('Tweet', array(
             'local' => 'id',
             'foreign' => 'user_id'));

        $timestampable0 = new Doctrine_Template_Timestampable();
        $softdelete0 = new softDelete();
        $this->actAs($timestampable0);
        $this->actAs($softdelete0);
    }
}

Ответы [ 2 ]

1 голос
/ 26 августа 2011

Проблема была решена. Я использовал функциональность softdelete и забыл установить:

$manager->setAttribute(Doctrine_Core::ATTR_USE_DQL_CALLBACKS, true);

Это необходимо для работы softdelete. Я также обнаружил, что в моих сгенерированных моделях использовался неправильный код для softdeletion:

$softdelete0 = new softDelete();

Вместо:

$softdelete0 = new Doctrine_Template_SoftDelete();
0 голосов
/ 21 августа 2011

До этого я сталкивался с этой проблемой, и после 3 дней поиска я не смог найти решения, в конце которого я перешел на использование инструмента symfony cli для генерации sql и создания БД из файла yaml

...