Doctrine orm “返回一条原则”;查找();作为一个类的结果

Doctrine orm “返回一条原则”;查找();作为一个类的结果,doctrine-orm,Doctrine Orm,因此,我知道一个条令“find()”(条令2)调用的结果会产生一个基于条令的类,但我试图通过SOAP连接(不要问)只输出相关数据,并且不希望所有的条令元数据也通过 例如,我的查找结果('Account',1)返回给我一个类,其中包含firstName、lastName和emailAddress的属性。类上的一个属性也与硬件模型相关,并允许我在那里访问相关的结果。不过,我想要的回报是: object(stdClass)#15 (5) { ["companyName"]=> strin

因此,我知道一个条令“find()”(条令2)调用的结果会产生一个基于条令的类,但我试图通过SOAP连接(不要问)只输出相关数据,并且不希望所有的条令元数据也通过

例如,我的查找结果('Account',1)返回给我一个类,其中包含firstName、lastName和emailAddress的属性。类上的一个属性也与硬件模型相关,并允许我在那里访问相关的结果。不过,我想要的回报是:

object(stdClass)#15 (5) {
  ["companyName"]=>
  string(12) "test company"
  ["firstName"]=>
  string(5) "chris"
  ["id"]=>
  int(1)
  ["lastName"]=>
  string(7) "smith"
  ["hardware"]=> array(
    [0] => object(stdClass)#15 (5) {
        ["hostname"]=>
        string(12) "host1",
    [1] => object(stdClass)#16 (5) {
        ["hostname"]=>
        string(12) "host2",
    [2] => object(stdClass)#17 (5) {
        ["hostname"]=>
        string(12) "host3"
  )

似乎应该有一种自动的方法来做这类事情,这样我就不必编写一个定制的过滤方法/类来去除我需要的数据。那里的条令开发者有什么建议吗?

我想这可能是你想要的:

$em->getRepository('namespace\entity')->createQueryBuilder('a')->where('criteria = 1')->getQuery()->getArrayResult();

但是您需要修改位置。

尝试展开相关对象:

$account->setHardware($account->getHardware()->toArray());

但是忘记标准类的事情吧,获得它的唯一方法是将对象转换为数组,然后将它们转换为对象。无论如何,如果它是SOAP连接,我想你应该使用数组而不是对象。

Hmm,这看起来确实需要做很多工作——而且我不想把它作为数组。Hmm,我终于重新尝试了……似乎对我不起作用:
code
hw=$em->getRepository('Account')->createQueryBuilder('a')->where('id=1')->getQuery()->getArrayResult()
code
所以你不想让Doctrine返回代理实例?嗯,我还是Doctrine的新手,所以我不能100%确定这个问题的答案,但我要说“正确”。