Comment faire un tableau de MongoId dans Symfony 3.2 Doctrine ODM sérialisé/désérialisé correctement?Symfony 3.2 ODM Doctrine array de MongoId
document
namespace Acme\StoreBundle\Document;
use Doctrine\ODM\MongoDB\Mapping\Annotations as MongoDB;
/**
* @MongoDB\Document(collection="Voter")
*/
class Voter
{
/**
* @MongoDB\Id
*/
protected $id;
/**
* @MongoDB\Collection
*/
protected $inlist;
/**
* Get id
*
* @return id $id
*/
public function getId()
{
return $this->id;
}
public function setId($id)
{
$this->id = $id;
return $this;
}
/**
* Set inlist
*
* @param collection $inlist
* @return $this
*/
public function setInlist($inlist)
{
$this->inlist = $inlist;
return $this;
}
/**
* Get inlist
*
* @return collection $inlist
*/
public function getInlist()
{
return $this->inlist;
}
}
Controller:
/**
* @Route("/voter/{id}")
* @Method({"GET"})
*/
public function getAction($id)
{
$product = $this->get('doctrine_mongodb')
->getRepository('AcmeStoreBundle:Voter')
->find($id);
if (!$product) {
throw $this->createNotFoundException('No product found for id ' . $id);
}
$serializer = $this->get('serializer');
$data = $serializer->serialize(
$product,
'json'
);
$response = new JsonResponse();
$response->setContent($data);
return $response;
}
sérialisé Json:
{
"id": "593e99a8de6c84f5ecec3094",
"inlist": [
{
"timestamp": 1417718686,
"pID": 3335,
"inc": 9127278,
"$id": "5480ab9e282e26070d8b456e"
},
{
"timestamp": 1417718686,
"pID": 3335,
"inc": 9127273,
"$id": "5480ab9e282e26070d8b4569"
},
{
"timestamp": 1417718686,
"pID": 3335,
"inc": 9127272,
"$id": "5480ab9e282e26070d8b4568"
},
{
"timestamp": 1417718686,
"pID": 3335,
"inc": 9127275,
"$id": "5480ab9e282e26070d8b456b"
},
{
"timestamp": 1417718686,
"pID": 3335,
"inc": 9127274,
"$id": "5480ab9e282e26070d8b456a"
},
{
"timestamp": 1411754988,
"pID": 2674,
"inc": 9127271,
"$id": "5425abec8f3723720a8b4567"
}
]
}
Je veux être sérialisé à être un tableau de (chaîne) id, et désérialiser retour à un tableau de ce MongoId:
{
"id": "593e99a8de6c84f5ecec3094",
"inlist": ['5425abec8f3723720a8b4567', '5480ab9e282e26070d8b456b' ...]
}
transformer simplement 'entrées de inlist' au format de votre choix dans le contrôleur ou tout autre lieu que vous voyez en forme? – malarzm
J'ai fait une solution de contournement avec getInlist/setInlist transfom - mais je ne suis pas sûr que ce soit un 'bon' moyen –