2014-11-15 76 views
1

我正在用php 5.6構建一個zend framework 2應用程序我使用的是doctrine2作爲數據庫相關代碼。 我爲數據庫中的每個表創建了Yaml文件。如何從createNativeQuery中獲取結果?

我想調用一個查詢並返回它的結果。

我用下面的代碼:

$query=<<<EOS 

QUERY... 
EOS; 

    $objectManager=$this->getObjectManager(); 

    $rsm = new ResultSetMapping(); 
    $rsm->addEntityResult('MyAlcoholist\Entity\DrinkFlavorInfo','u'); 
    $rsm->addFieldResult('u','drink_type_name','drinkTypeName'); 
    $rsm->addFieldResult('u','drink_brand_name','drinkBrandName'); 
    $rsm->addFieldResult('u','drimk_company_name','drinkCompanyName'); 
    $rsm->addFieldResult('u','drink_flavor_type_name','drinkFlavorTypeName'); 

    $query = $objectManager->createNativeQuery($query,$rsm); 
    $query->setParameter(1, $id); 
    $drinkFlavors = $query->getResult(); 
    die(var_export($drinkFlavors,1)); 

我創建了一個名爲DrinkFlavorInfo與getter和setter變量類,但因爲我配置主義與YAML來工作,那麼它的搜索YAML文件來代替。在yaml配置 其中一個屬性是table_name,並沒有表,我只是試圖創建一個類,將保存返回的值。我怎麼能這樣做?

回答

1

確定,所以看來這是我應該怎麼定義的列和執行查詢:

$objectManager=$this->getObjectManager(); 

    $rsm = new ResultSetMapping(); 
    $rsm->addScalarResult('drink_brand_name','drinkBrandName'); 
    $rsm->addScalarResult('drink_type_name','drinkTypeName'); 
    $rsm->addScalarResult('drink_flavor_type_name','drinkFlavorTypeName'); 
    $rsm->addScalarResult('drink_company_name','drinkCompanyName'); 
    $query = $objectManager->createNativeQuery($query,$rsm); 
    $query->setParameter(1, $id); 
    $drinkFlavors = $query->getArrayResult(); 
    die(var_export($drinkFlavors,1)); 

這部作品:)

+0

這是非常有幫助,謝謝!它看起來在本機查詢中甚至有「as Name」,甚至在結果中也包含單個標量列 - 但我們無論如何都必須定義映射。 – Arkemlar