2010-09-29 7 views
2

J'utilise quercus pour appengine. J'ai essayé d'enregistrer une longue chaîne php (> 1000 caractères) mais appengine ne me le permet pas car String ne peut contenir que 500 caractères. J'ai donc essayé d'utiliser le type de données Texte d'appengine. Il me permet de sauvegarder, cependant, quand je récupère les données de PHP, il me renvoie un type resource() au lieu de chaîne.Enregistrement de grandes chaînes de caractères en php à l'aide de quercus

Laissez-moi vous expliquer avec le code:

<?php 
$a = new Text("this is a long string that contains more than 1000 characters"); 
$b = "this is a long string that contains more than 1000 characters"; 
$e = new Entity('Article'); 
$e->setProperty('content', $a); // this works fine 
// $e->setProperty('content', $b); // will complain as strlen($b) is > 500 
$db = DatastoreServiceFactory::getDatastoreService(); 
$id = KeyFactory::keyToString($db->put($e)); // works ok, returns the ID of Entity saved 
?> 

Maintenant, tout est bien beau, mais quand je récupère le contenu de $ e, il me renvoie une ressource() type de données.

<?php 
$q = new Query('Article'); 
$ps = $db->prepare($q); 
foreach($ps->asIterable() as $i) { 
    echo gettype($i->getProperty('content')); // this will echo Object, which when var_dump'd, gives me a resource() which is not convertible to php string, thus I can't get the human readable value 
} 
?> 

Y at-il une solution de contournement à cela? Toute aide est très appréciée comme je l'ai tirais mes cheveux pendant des jours ...

Répondre

0

Ok résolu par la conversion objet java chaîne

$content = $i->getProperty('content'); 
if(is_object($content)) { 
    if($content instanceof Text) { 
     $content = $content->getValue(); 
    } 
} 
Questions connexes