2015-11-05 65 views
0

我已經從ContainerAwareCommand擴展了我的類。 我有執行功能,我想執行查詢。 這是我的$ em和$ $ repo的執行函數。使用ContainerAwareCommand執行查詢原則

protected function execute(InputInterface $input, OutputInterface $output){ 
      $em = $this->getContainer()->get('doctrine')->getEntityManager(); 
      $repo = $em->getRepository('SshBundle:Cinema'); 

我該如何執行查詢? 謝謝。

回答

0

您有幾種方法可以從這一點進行查詢。

  1. 如果您對影院實體的自定義庫,那麼你可以創建的電影資料庫,返回你想要得到的結果的方法。或者你可以使用Repository類的find,findBy,findOneBy方法,例如。

    $ current = $ repo-> find($ current_id);

  2. 您可以使用Doctrine查詢語言(DQL)使用entity_manager變量創建查詢,在您的情況下爲$ em。

    $結果= $ EM->的createQuery( 「選擇c從SshBundle:電影院C」) - >的getResult()

它會返回一個實體集合與符合您的條件的結果。

  • 使用查詢生成器:

    $結果= $ EM-> createQueryBuilder() - >選擇( 'C') - 從(> 'SshBundle:電影院' ,'c') - > getQuery() - > getResult()

  • 它會執行與(2)相同的操作。

    1. 使用原始SQL查詢意味着連接。

      $結果= $ EM->的getConnection() - >使用fetchall( 'SELECT * FROM your_table_name')

    在圖1和2和3中可以爲了傳遞參數到的getResult功能建立結果的水合模式,將結果作爲實體,對象或數組提取。

    您的查詢還可以返回標量結果,例如COUNT個結果。實體管理器也有處理它們的方法。

    我希望這會有所幫助。