Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php symfony2-如何在创建本机查询时一次添加所有字段结果_Php_Symfony - Fatal编程技术网

Php symfony2-如何在创建本机查询时一次添加所有字段结果

Php symfony2-如何在创建本机查询时一次添加所有字段结果,php,symfony,Php,Symfony,在symfony2项目中,假设我们有一个本机查询和一个ResultsMapping,如下所示: $rsm = new ResultSetMapping; $rsm->addEntityResult('User', 'u'); $rsm->addFieldResult('u', 'id', 'id'); $rsm->addFieldResult('u', 'name', 'name'); ... $query = $this->_em->createNativeQu

在symfony2项目中,假设我们有一个本机查询和一个ResultsMapping,如下所示:

$rsm = new ResultSetMapping;
$rsm->addEntityResult('User', 'u');
$rsm->addFieldResult('u', 'id', 'id');
$rsm->addFieldResult('u', 'name', 'name');
...

$query = $this->_em->createNativeQuery('SELECT id, name... FROM users', $rsm);
这行代码很好用,但我想知道是否可以一次添加所有字段,而不必键入每一行

大概是这样的:

$rsm = new ResultSetMapping;
$rsm->addEntityResult('User', 'u');
$rsm->addFieldResults('u');
...

$query = $this->_em->createNativeQuery('SELECT * FROM users', $rsm);
使用对象:

ResultSet映射的一个简单起点是
ResultSetMappingBuilder
对象。这有几个好处:

  • 当实体元数据上的字段或关联发生更改时,生成器负责自动更新
    结果映射

  • [……]


你为什么要这样做?ResultSetMapping的职责是定义映射。当你根据自己的愿望使用补水剂补水时,你有很多的可能性。如果您真的想实现这一点,我建议创建一些助手函数,它读取并运行ClassMetaData中的所有字段。但老实说,我不认为这样做有任何意义。我只是想知道是否存在任何函数来执行此操作,因为对于我要检索的每个变量,我更喜欢一行代码而不是一行“addFieldResult”。。。现在我有25条addFieldResult行,我只希望有一条。是个好主意的助手函数,我来试试吧!但为什么要这么做呢?你的方法背后的原因是什么?我已经找到了方法,有一个addRootEntityFromClassMetadata函数,它正是我所需要的。对不起,如果我不知道怎么解释你。我这样做是因为我需要一个nativequery来检索一个实体中的所有数据,再加上一个包含平均值和其他表计数的单元格(通过一个左联接子查询)。我想要新字段,但也要实体字段(并且不必为每个字段键入“addEntityResult”),这很公平,很高兴您找到了需要的内容
$rsm = new ResultSetMappingBuilder($entityManager);
$rsm->addRootEntityFromClassMetadata('User', 'u');