Doktrinde Textfield güncellenmesi bir istisna oluşturur

3 Cevap php

Ben örnek aşağıdaki metni için söylemek içeren Textfield var: -

"Yorkshire pudingi meyilli sosis içeren bir geleneksel İngiliz yemek, genellikle sebze ve sos ile servis edilir."

Bu textfield basitçe kimliğim kullanılarak bir öğe kaydını güncelleyen bir formdadır. Ben TextField bölümünü düzenlemek ve değiştirin "ve sos." "humous." ile Textfield şimdi içerir, böylece

"Yorkshire pudingi meyilli sosis içeren bir geleneksel İngiliz yemek, genellikle sebze ve humous ile servis."

Ben aşağıdaki özel durum alıyorum: -

Fatal error: Uncaught exception 'Doctrine_Query_Exception' with message 'Unknown component alias humous' in C:\Projects\nitrous\lightweight\system\database\Doctrine\Query\Abstract.php:780 Stack trace: 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 on line 780

Kimse ile ilgilenen varsa ben CodeIgniter 1.7.0 bağladım Doktrini 1.0.6 kullanıyorum.

Aşağıdaki gibi aslında güncelleştirme gerçekleştirir Benim doktrin sorgu görünüyor: -

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

This seems bizarre because if i replace the entire string "Yorkshire pudingi meyilli sosis içeren bir geleneksel İngiliz yemek, genellikle sebze ve humous ile servis." with something completely different like just "test" it doesn't throw an exception and works just fine. This baffles me... is it a bug in Doctrine or have I missed something?

3 Cevap

Bu Doktrin düşünüyor açıktır

  1. Eğer 'humous' içeren uzun bir dize, 'humous' olarak değil veren, ve vardır
  2. 'humous' veri değil bir ad olmadığını.

Ben size yaptığını düşünüyorum ne veri dizesi yapıyorsun şüphe ederim. Ürettiği gerçek SQL dökümü almak için Doktrini bir ayar var mı?

Ben sadece biraz tecrübe ve ben ekliyorum, çünkü sorun olduğunu öğrendim "blah." sonunda anahtarı burada ben sadece "blah" varsa bu iyi ama bir "." öyle değil.

Ben her zamanki sql bir filan sorgular biliyorum. sözdizimi gösterir ve bir tablo takma. O sesler bu ne demek olduğunu.

Herhangi nedeniyle FullStop ve nasıl aşmanın Doktrini çok karıştı neden fikir?

Ben kendi sorununa çözüm bulundu. Bu Doktrini 1.0.6 bilinen bir hata mesajı görüntülenir. Doktrin 1.1.1 yükseltilmiş ettik ve bu sorunu çözmüş görünüyor.

Bu da sizin sorunun çözülüp çözülmeyeceğini görmek için Doktrini farklı sürümlerini çalışıyor şu! Görseydiniz insanlara cevap için teşekkürler.