[英]Doctrine SQL/table generation failing
我試圖使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核心文件中找到解決方案。 我希望這里的人知道。
提前致謝。
更新:不能因為這個 (舊的?)錯誤,因為我沒有以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')))
仍然是一個空數組。
問題在於生成的模型名稱是這樣的:
<?php
abstract class BaseClass extends Doctrine_Record
{
}
刪除abstract關鍵字可以解決問題。 其他所有的Doctrine模型都不使用abstract關鍵字,因此刪除它不會有任何危害。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.