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