更新doctrine中的textfield会产生异常

时间:2009-05-20 15:47:47

标签: php database codeigniter frameworks doctrine

我有一个包含例如以下文字的文本字段: -

“一种传统的英式菜肴,包括约克郡布丁面糊的香肠,通常配上蔬菜和肉汁。”

此文本字段的形式只是使用其ID更新项目记录。如果我编辑部分文本字段并替换“和肉汁”。与“幽默”。这样文本字段现在包含

“一种传统的英式菜肴,包括约克郡布丁面糊中的香肠,通常配上蔬菜和腐肉。”

我收到以下异常: -

  

致命错误:未捕获的异常   'Doctrine_Query_Exception'用   消息'未知组件别名   好奇的   C:\项目\氮\轻量级\ SYSTEM \数据库\原则\查询\ Abstract.php:780   堆栈跟踪:   C:\项目\亚硝酸\轻质\ SYSTEM \数据库\学说\查询\ Abstract.php(767):   Doctrine_Query_Abstract-> getQueryComponent('humous')C:\ Projects \ nitrous \ lightweight \ system \ database \ Doctrine \ Query \ Set.php(58):   Doctrine_Query_Abstract-> getAliasDeclaration( '腐殖土')   C:\项目\亚硝酸\轻质\ SYSTEM \数据库\学说\查询\ Abstract.php(2092):   Doctrine_Query_Set->解析('i.details =   '一个 ...')   C:\项目\亚硝酸\轻质\ SYSTEM \数据库\学说\ Query.php(1058):   Doctrine_Query_Abstract-> _processDqlQueryPart('set',Array)   C:\项目\亚硝酸\轻质\ SYSTEM \数据库\学说\查询\ Abstract.php(971):   Doctrine_Query-> getSqlQuery(阵列)   C:\项目\亚硝酸\轻质\ SYSTEM \数据库\学说\查询\ Abstract.php(1030):   Doctrine_Query_Abstract-> _execute(阵列)   C:\项目\氮\轻量级\ SYSTEM \申请   在   C:\项目\氮\轻量级\ SYSTEM \数据库\原则\查询\ Abstract.php   在780行

如果有兴趣的话,我正在使用Doctrine 1.0.6连接到CodeIgniter 1.7.0。

我实际执行更新的学说查询如下: -

public function updateItems($id, $arrayItem) {
    $query = new Doctrine_Query();
    $query->update('Item i');

    foreach($arrayItem as $key => $value) {
        $query->set('i.'.$key, "'".$value."'");
    }

    $query->where('i.id = ?', $id);
    return $query->execute();
}

这看起来很奇怪,因为如果我更换整个字符串“在约克郡布丁面糊中包含香肠的传统英式菜肴,通常配上蔬菜和腐肉。”与完全不同的东西,如只是“测试”它不会抛出异常,并且工作得很好。这令我感到困惑......这是一个学说中的错误还是我错过了什么?

2 个答案:

答案 0 :(得分:2)

很明显,Doctrine认为

  1. 你给它''很好',而不是一个包含'humous'和
  2. 的长串
  3. 'humous'不是数据而是别名。
  4. 我怀疑你对数据字符串做了什么,你认为你在做什么。在Doctrine中是否有一个设置来让它转储它生成的实际SQL?

答案 1 :(得分:0)

我找到了解决自己问题的方法。看来这是Doctrine 1.0.6中的已知错误。我已升级到Doctrine 1.1.1,这似乎解决了这个问题。

我会建议尝试不同版本的Doctrine,看看这是否能解决你的问题!如果你这样做,谢谢你回答。