Versuch, Objekt in MongoDB zu persistieren. Ich bin neu in MongoDB und Symfony.Symfony2 Mongodb um Objekt mehrfach zu persistieren
Mein Code ist unten:
$neo = new Neo();
$dm = $this->getContainer()->get('doctrine_mongodb')->getManager();
$jd = new JsonDecode();
$neo_obj = $jd->decode($response->getBody(),"json");
foreach($neo_obj->near_earth_objects as $date => $object) {
$output->writeln("Date:".$date);
$neo->setDate($date);
foreach($neo_obj->near_earth_objects as $object1) {
foreach($object1 as $object2)
{
$output->writeln("Name:".$object2->name);
$neo->setName($object2->name);
$output->writeln("neo_reference_id:".$object2->neo_reference_id);
$neo->setNeoReferenceId($object2->neo_reference_id);
$output->writeln("is_potentially_hazardous_asteroid:".$object2->is_potentially_hazardous_asteroid);
$neo->setIsPotentiallyHazardousAsteroid($object2->is_potentially_hazardous_asteroid);
foreach($object2->close_approach_data as $object3)
{
$i=0;
foreach($object3->relative_velocity as $object4)
{
if($i===1)
{
$output->writeln("kilometers_per_hour:".$object4);
$neo->setSpeed($object4);
$dm->persist($neo);
$dm->flush();
}
$i=$i+1;
}
}
}
}
}
leider nur das letzte Objekt gespeichert wird.
ich Robomongo verwende es zu sehen ... und sehen nur neueste Eintrag :(
Irgendwelche Ideen, wie es richtig zu machen?
Auch, wie kann mein Code optimiert und für die Lesbarkeit und die Leistung verbessert werden ?
tahnks,
Update 1:
Changed my co Dazu wurde es optimiert, indem eine zusätzliche Schleife entfernt wurde.
@Gerry:
Ist das, was Sie mit dem Erstellen von Neo Objekt auf jeder Schleife bedeuten und als es am Schleifenende persistierenden?
Kann dieser Code irgendwie optimiert werden? Besser lesbar gemacht?
Danke,
$dm = $this->getContainer()->get('doctrine_mongodb')->getManager();
$jd = new JsonDecode();
$neo_obj = $jd->decode($response->getBody(),"json");
foreach($neo_obj->near_earth_objects as $date => $object1) {
foreach($object1 as $object2)
{
$neo = new Neo();
$output->writeln("Date:".$date);
$neo->setDate($date);
$output->writeln("Name:".$object2->name);
$neo->setName($object2->name);
$output->writeln("neo_reference_id:".$object2->neo_reference_id);
$neo->setNeoReferenceId($object2->neo_reference_id);
$output->writeln("is_potentially_hazardous_asteroid:".$object2->is_potentially_hazardous_asteroid);
$neo->setIsPotentiallyHazardousAsteroid($object2->is_potentially_hazardous_asteroid);
foreach($object2->close_approach_data as $object3)
{
$i=0;
foreach($object3->relative_velocity as $object4)
{
if($i===1)
{
$output->writeln("kilometers_per_hour:".$object4);
$neo->setSpeed($object4);
$dm->persist($neo);
$dm->flush();
}
$i=$i+1;
}
}
}
}
Danke. Ich aktualisierte die Frage mit Update 1 und neuen Code basierend auf Ihrem Vorschlag. Es funktioniert jetzt ... kann es besser gemacht werden? Best Practices oder Lese-/Performance-Optimierungen folgen? –
Sie sollten eine StackOverflow-Frage auf eine Frage beschränken. Fühlen Sie sich frei, eine andere Frage über Optimierung zu stellen und diese Antwort auf Ihre ursprüngliche Frage zu akzeptieren. – Gerry