我正在尝试从我先前用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();
}
但这也带来了:
无效的
提前谢谢。
更新:
不可能是因为
this
(老?)bug,因为我没有以A或B开头的表名。
更新:
我的引导.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')))
仍然是空数组。