12
votes

Comment obtenez-vous la valeur de chaîne d'un Mongoïde en utilisant PHP?

Après avoir effectué un insert, je veux transmettre l'objet au client à l'aide de JSON_ENCODE (). Le problème est que la valeur _id n'est pas incluse.

$widget = array('text' => 'Some text');

$this->mongo->db->insert($widget);


If I echo $widget['_id'] the string value gets displays on the screen, but I want to do something like this:

$widget['widgetId'] = $widget['_id']->id;


So I can do json_encode() and include the widget id:

echo json_encode($widget);


0 commentaires

5 Réponses :


44
votes

Croyez que c'est ce que vous êtes après. XXX PRE>

Quelque chose comme ça. P>

$widget = array('text' => 'Some text');
$this->mongo->db->insert($widget);
$widget['widgetId'] = $widget['_id']->{'$id'};
echo json_encode($widget);


1 commentaires

Référence ici: php.net/manual/fr/class.mongoid.php . Je préférerais la (String) Typeecast en dessous de moi-même, mais au moment de la question que j'utilisais la méthode décrite dans les documents.



23
votes

Vous pouvez également utiliser:

(string)$widget['_id']


0 commentaires

2
votes

J'ai utilisé quelque chose de similaire: XXX


1 commentaires

Merci beaucoup :) ça marche bien pour moi ... $ filtre = ['_ id' => $ ligne -> _ id]; et $ filtre que vous pouvez passer à la fonction DELEETONE et FINCHONE



1
votes

J'ai utilisé quelque chose de similaire si l'objet: xxx

ou xxx

ou matrice: xxx


0 commentaires

5
votes

Correction correcte est d'utiliser ObjectId à partir de MongoDB:

function getMongodbIDString($objectId){
    $objectId = new \MongoDB\BSON\ObjectId($objectId);
    return $objectId->jsonSerialize()['$oid'];
}


2 commentaires

merci d'avoir donné ce code. Aucun autre code ne fonctionne, sauf ... une fois merci beaucoup.


@Dhanunjaya, sympa, essayez d'utiliser la doctrine ODM, il gère tout ce genre de choses