返回一个学说" find()"结果作为一个班级

时间:2011-10-25 11:48:58

标签: doctrine-orm

所以,我知道一个Doctrine“find()”(Doctrine 2)调用的结果导致了一个基于Doctrine的类,但我试图通过SOAP连接输出相关的数据(不要请问)并且不希望所有的Doctrine元数据也通过。

例如,我的查找结果('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"
  )

似乎应该有一种自动方式来执行此类操作,因此我不必编写自定义过滤方法/类来删除我需要的数据。 Doctrine的任何提示都在那里开发?

2 个答案:

答案 0 :(得分:1)

我认为这可能是您正在寻找的东西:

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

但你需要修改where。

答案 1 :(得分:1)

尝试打开相关对象:

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

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