2014-11-15 64 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