簡體   English   中英

主義SQL /表生成失敗

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM