2010-10-20 5 views
5

sto memorizzazione di un file tramite GridFS e salvare l'id in questo modo:MongoDB PHP: Come ottengo ObjectId con un feed JSON? (È vuoto)

$file_id = $gridfs->storeUpload('texture'); 
$item = array(
    'name'=>$_POST['name'], 
    'description'=>$_POST['description'], 
    'price'=>$_POST['price'], 
    'categories'=>$category_array, 
    'tags'=>$tag_array, 
    'file'=>$file_id 
); 
$collection->insert($item); 

e attraverso il terminale e fare find() "file" restituisce: ObjectId ("4cbe9afe460890b774110000")

Se faccio questo per creare un feed JSON modo da poter ottenere informazioni di nuovo per il mio "file" applicazione è vuoto ... perché è questo ?:

foreach($cursor as $item){ 
      $return[$i] = array(
       'name'=>$item['name'], 
       'description'=>$item['description'], 
       'file'=>$item['file'] 
      ); 
      $i++; 
     } 
     echo json_encode($return); 

La cosa strana, per me, è il motivo per cui può Faccio:

foreach($cursor as $item){ 
echo $item['file']; 
} 

e riprenderlo?

Oh, e qui è quello che i rendimenti di alimentazione:

[{"name":"Tea Stained Paper 1","description":"Grungy paper texture stained with tea and coffee.","file":{}},{"name":"Worn Metal 1","description":"A grooved, worn old metal texture","file":{}}] 

risposta

5

Non sono sicuro, ma forse

echo json_encode($return, JSON_FORCE_OBJECT); 

è ciò che devi fare.

Potrebbe anche essere, che è necessario convertire $item['file'] a utf8

utf8_encode($item['file']); 

prima di assegnarlo alla matrice $return.

+0

Grazie! La prima cosa, anche se non la risposta, è fantastica. Non sapevo che esistesse. Sto usando quello ora. E, UTF8 ha funzionato! –

1

I mongoli tengono i loro valori nascosti in un campo invisibile. Non ha campi visibili, quindi non c'è nulla da convertire in JSON, quindi {}. Se desideri che json_encode faccia la parte "giusta", vota per http://jira.mongodb.org/browse/PHP-154.

Echoing un MongoId lo converte in una stringa, ecco perché si comporta in modo diverso.

+0

Quindi, come faccio? Ho bisogno di farlo eco? –

+0

Nevermind! Ma vorrei che funzionasse senza dover convertire in utf8! –