0
尝试在MongoDB中持久化对象。我是MongoDB和Symfony的新手。Symfony2 Mongodb多次持久化对象
我的代码如下:
$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;
}
}
}
}
}
遗憾的是,只有最后一个对象被保存。
我使用Robomongo查看它...只看到最新的入门:(
任何想法如何正确地做到这一点?
还怎么能我的代码进行优化,以提高可读性和性能改进?
Tahnks,
更新1:
改变了我的合作对此,通过删除一个额外的循环来优化它。
@Gerry:
这是你的意思是在每个循环创建新对象,并坚持比它循环到底是什么?
该代码可以以某种方式优化吗?更好的可读性?
感谢,
$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;
}
}
}
}
谢谢。我根据您的建议更新了Update 1和新代码的问题。它现在可以工作......它可以做得更好吗?遵循最佳实践或阅读/性能优化? –
你应该限制一个StackOverflow问题的一个问题。随意创建一个不同的问题,虽然关于优化和接受这个答案关于您的原始问题。 – Gerry