Doctrine SQL /表生成失败

时间:2010-09-19 17:54:09

标签: php postgresql orm doctrine sql-generation

我正在尝试让Doctrine从我之前使用YAML架构创建的一组模型中生成SQL。使用下面的代码来自手册,输出应该是一组查询。

<?php
// test.php
require_once('bootstrap.php');

try 
{
    $models = Doctrine_Core::generateSqlFromModels('models/generated');

    echo '<pre>';
    var_dump($models);
    echo '</pre>';
}
catch(Exception $e)
{
    echo $e->getMessage();
}

但是,此代码的结果是:

NULL

虽然它应该返回带有SQL查询的字符串,如前所述。

我也尝试了以下内容:

<?php
// test.php
require_once('bootstrap.php');

try {
    $result = Doctrine_Core::createTablesFromModels('models/generated');

    echo '<pre>';
    var_dump($result);
    echo '</pre>';
}
catch(Exception $e)
{
    echo $e->getMessage();
}

但也会返回:

NULL

我无法在手册,API参考或Doctrine核心文件中找到解决方案。我希望有人知道。

提前致谢。

更新:这不是因为this(旧?)错误,因为我没有以A或B开头的表名。

更新:我的bootstrap.php如下所示:

/**
 * Bootstrap Doctrine.php, register autoloader specify
 * configuration attributes and load models.
 */

require_once(dirname(__FILE__) . '/lib/vendor/doctrine/Doctrine.php');
spl_autoload_register(array('Doctrine', 'autoload'));
$manager = Doctrine_Manager::getInstance();
$conn = Doctrine_Manager::connection('pgsql://user:pass@localhost/dbname', 'doctrine');

$manager->setAttribute(Doctrine_Core::ATTR_VALIDATE, Doctrine_Core::VALIDATE_ALL);
$manager->setAttribute(Doctrine_Core::ATTR_EXPORT, Doctrine_Core::EXPORT_ALL);
$manager->setAttribute(Doctrine_Core::ATTR_MODEL_LOADING, Doctrine_Core::MODEL_LOADING_CONSERVATIVE);

更新:我已更改了该行:

$manager->setAttribute(Doctrine_Core::ATTR_MODEL_LOADING, Doctrine_Core::MODEL_LOADING_CONSERVATIVE);

为:

$manager->setAttribute(Doctrine_Core::ATTR_MODEL_LOADING, Doctrine_Core::MODEL_LOADING_AGGRESSIVE);

但输出

print_r(Doctrine_Core::filterInvalidModels(Doctrine_Core::loadModels('models/generated'))) 

仍然是一个空数组。

1 个答案:

答案 0 :(得分:0)

问题是生成的模型名称是这样的:

<?php
abstract class BaseClass extends Doctrine_Record
{

}

删除抽象关键字就可以了。所有其他Doctrine模型都没有使用abstract关键字,因此删除它不会有任何伤害。