2

たとえば、次のテキストを含むテキストフィールドがあります:-

「ヨークシャー プディング生地にソーセージを入れた伝統的な英国料理で、通常は野菜と肉汁が添えられます。」

このテキスト フィールドは、ID を使用してアイテム レコードを単純に更新する形式になっています。テキストフィールドの一部を編集して「and gravy.」を置き換えます。「ユーモラス」で。テキストフィールドに含まれるようになりました

「ヨークシャー プディング生地にソーセージを入れた伝統的な英国料理で、通常は野菜とユーモアを添えて出されます。」

次の例外が発生します:-

致命的なエラー: C:\Projects\nitrous\lightweight\system\database\Doctrine\Query\Abstract.php:780 のメッセージ「Unknown component alias humous」を含む例外「Doctrine_Query_Exception」がキャッチされませんでした: C:\Projects\nitrous\lightweight \system\database\Doctrine\Query\Abstract.php(767): Doctrine_Query_Abstract->getQueryComponent('humous') C:\Projects\nitrous\lightweight\system\database\Doctrine\Query\Set.php(58): Doctrine_Query_Abstract ->getAliasDeclaration('humous') C:\Projects\nitrous\lightweight\system\database\Doctrine\Query\Abstract.php(2092): Doctrine_Query_Set->parse('i.details = 'A ...') C :\Projects\nitrous\lightweight\system\database\Doctrine\Query.php(1058): Doctrine_Query_Abstract->_processDqlQueryPart('set', Array) C:\Projects\nitrous\lightweight\system\database\Doctrine\Query\Abstract.php(971): Doctrine_Query->getSqlQuery(Array) C:\Projects\nitrous\lightweight\system\database\Doctrine\Query\Abstract.php( 1030): Doctrine_Query_Abstract->_execute(Array) C:\Projects\nitrous\lightweight\system\appl in C:\Projects\nitrous\lightweight\system\database\Doctrine\Query\Abstract.php 行 780

誰かが興味を持っている場合は、CodeIgniter 1.7.0 にフックされた Doctrine 1.0.6 を使用しています。

実際に更新を実行する私のドクトリンクエリは次のようになります:-

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();
}

文字列全体を置き換えると、「ヨークシャー プディングのバッターにソーセージを入れた伝統的な英国料理で、通常は野菜とユーモアを添えて提供される」ため、これは奇妙に思えます。「テスト」のような完全に異なるものを使用すると、例外はスローされず、正常に動作します。これは私を困惑させます...これはDoctrineのバグですか、それとも何かを見逃したのでしょうか?

4

2 に答える 2

2

Doctrineが考えていることは明らかです

  1. あなたはそれに「フムス」を与えています、「フムス」を含む長い文字列ではありません、そして
  2. その「フムス」はデータではなくエイリアスです。

私はあなたがあなたがしていると思うことをデータ文字列に対してしているとは思えません。Doctrineに、生成される実際のSQLをダンプするように設定する設定はありますか?

于 2009-05-20T16:48:55.507 に答える
0

私は自分の質問に対する解決策を見つけました。これはDoctrine1.0.6の既知のバグのようです。Doctrine 1.1.1にアップグレードしましたが、これで問題が解決したようです。

Doctrineのさまざまなバージョンを試して、これで問題が解決するかどうかを確認することをお勧めします。もしそうなら、人々に答えてくれてありがとう。

于 2009-05-21T16:59:36.230 に答える