Ahorrando gran cadena en PHP usando quercus
-
26-09-2019 - |
Pregunta
Estoy usando quercus para appengine. He intentado salvar una cadena php larga (> 1000 caracteres) pero appengine no me va a permitir que la mayor cadena sólo puede contener 500 caracteres. Así que he intentado usar tipo de datos de texto de appengine. Le permite a salvar, sin embargo, cuando puedo recuperar los datos de PHP, me devuelve un recurso () en lugar de tipo cadena.
Me explico con código:
<?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
?>
Ahora bien de todos y dandy, pero cuando puedo recuperar el contenido de $ e, me va a devolver un recurso () Tipo de datos.
<?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
}
?>
¿Hay alguna solución para esto? Cualquier ayuda es muy apreciada ya que he estado tomando el pelo durante días ...
Solución
Ok resolvió mediante la conversión de objeto java a cadena
$content = $i->getProperty('content');
if(is_object($content)) {
if($content instanceof Text) {
$content = $content->getValue();
}
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow