如何从createNativeQuery获得结果?

时间:2014-11-15 18:25:27

标签: php doctrine-orm zend-framework2

我正在使用php 5.6构建zend框架2应用程序

我使用doctrine2作为数据库相关代码。 我为数据库中的每个表创建了Yaml文件。

我试图调用查询并返回结果。

我使用以下代码:

  $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,但由于我将doctrine配置为使用yaml,因此它正在搜索yaml文件。 在yaml配置中,其中一个属性是table_name,并且没有表,我只是尝试创建一个包含返回值的类。我怎么能这样做?

1 个答案:

答案 0 :(得分: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));

这有效:)