2013-07-10 56 views
0

我試圖通過Symfony文檔手冊中的DoctrineMongoDBBundle教程。我已經創建了測試「產品」集合,並且能夠毫無問題地插入到測試中,但是,我似乎無法再讀取它。或者至少,在我看來,我無法得到任何結果。Symfony2,Doctrine,MongoDb:無法傳遞查詢結果

SymfonyProfiler顯示查詢正在執行。但是,我的屏幕上沒有顯示任何內容。如果我不在視圖中註釋掉我的foreach循環,那麼工具欄甚至不會顯示出來。

控制器代碼:

/** 
* @route("/dbReadTest2/{id}") 
* @Template() 
*/ 
public function showAction() 
{ 
    $repository = $this->get('doctrine_mongodb') 
     ->getManager() 
     ->getRepository('AcmeStoreBundle:Product'); 

    $products = $repository->findAll(); 

    return $this->render('AcmeStoreBundle:Default:index.html.twig', array(
     'products' => $products, 
    )); 
} 

查看代碼:

{% if products.count %} 
    In if Block 
    <ul> 
    {% for product in products %} 
    In For Loop 
    <li>{{ product.name }} </li> 
    {% endfor %} 
    </ul> 
{% else %} 
    <p>. There are no products yet!</p> 
{% endif %} 
<p>End of Page</p> 

,我加載後得到的是 「在if塊」 唯一的輸出。沒有其他評論出現。

謝謝!

回答

0

我教義以這種方式工作:

控制器:

$products = $this->getDoctrine()->getRepository("AcmeStoreBundle:Product")->findProducts(); 

ProductRepository:

class GalleryRepository extends EntityRepository 
{ 
    public function findProducts(){ 
      return $this->getEntityManager()->getRepository("TLWEntitiesBundle:Product")->findAll(); 
    } 
} 

的代碼的其餘部分似乎確定。

+0

至少在2.7或3.0版本的symfony2中,你的語法是錯誤的。 – Dung

0

@ user2566987

1)絕對是您在樹枝代碼訪問傳球$產品變量是錯誤的。我沒有足夠的時間爲您編寫代碼,但我可以指導您解決方案 2)用{{ dump(products) }}替換您的視圖中的所有代碼,然後重新加載頁面,您將看到所有數據,並確定它們是否是php數據對象或PHP數據數組並使用適當的語法輸出它們。 3)如果不存在某個類的屬性字段,則不能訪問它,例如count是類產品的私有成員。我沒有看到它在鏈接教程http://symfony.com/doc/master/bundles/DoctrineMongoDBBundle/index.html

我希望它有幫助。