Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.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 如何将联接映射到本机sql结果集中的联接_Php_Join_Orm_Doctrine Orm - Fatal编程技术网

Php 如何将联接映射到本机sql结果集中的联接

Php 如何将联接映射到本机sql结果集中的联接,php,join,orm,doctrine-orm,Php,Join,Orm,Doctrine Orm,如何将联接映射到本机sql结果集中的联接 我想要一个结果集,其中的实体具有连接到连接的连接。当转储结果集时,我发现连接不正确。 结果集中第二个图元中的联接将联接到第一个图元。并且第二个实体中的连接为null。 但是,如果我省略了最深联接字段的映射,则联接将是正确的(除了缺少的字段) 关系 MyEntity ----> FooEntity ----> BarEntity sql结果 id some_field foo_id bar_id my_field 1 t

如何将联接映射到本机sql结果集中的联接

我想要一个结果集,其中的实体具有连接到连接的连接。当转储结果集时,我发现连接不正确。 结果集中第二个图元中的联接将联接到第一个图元。并且第二个实体中的连接为null。 但是,如果我省略了最深联接字段的映射,则联接将是正确的(除了缺少的字段)

关系

MyEntity ----> FooEntity ----> BarEntity
sql结果

id   some_field   foo_id   bar_id   my_field
1    testa        123      456      test1
1    testb        8823     998      test2
映射

$rsm->addEntityResult('MyEntity', 'a');

// first join
$rsm->addJoinedEntityResult('FooEntity', 'foo', 'a', 'foo');

// join to the first join
$rsm->addJoinedEntityResult('BarEntity', 'bar', 'foo', 'foo');

$rsm->addFieldResult('a', 'id', 'id')
    ->addFieldResult('a', 'some_field', 'someField')
    ->addFieldResult('foo', 'foo_id', 'id')
    ->addFieldResult('bar', 'bar_id', 'id');    
打印

// if I disable this addFieldResult, the joins are correct, but myField === null
//$rsm->addFieldResult('bar', 'my_field', 'myField')

object(stdClass)[352]
  public '__CLASS__' => string 'FooEntity' (length=42)
  public 'id' => int 123
  public 'bar' => 
    object(stdClass)[446]
      public '__CLASS__' => string 'BarEntity' (length=49)
      public 'id' => string '456' (length=2)
      public 'myField' => null
object(stdClass)[352]
  public '__CLASS__' => string 'FooEntity' (length=42)
  public 'id' => int 8823
  public 'bar' => 
    object(stdClass)[446]
      public '__CLASS__' => string 'BarEntity' (length=49)
      public 'id' => string '998' (length=2)
      public 'myField' => null

// if I enable this addFieldResult, the joins are incorrect
$rsm->addFieldResult('bar', 'my_field', 'myField');

object(stdClass)[352]
  public '__CLASS__' => string 'FooEntity' (length=42)
  public 'id' => int 123
  public 'bar' => 
      object(stdClass)[446]                                      | 
          public '__CLASS__' => string 'BarEntity' (length=49)   | THE WRONG BarEntity
          public 'id' => string '998' (length=2)                 |
          public 'myField' => null                               |
object(stdClass)[352]
  public '__CLASS__' => string 'FooEntity' (length=42)
  public 'id' => int 8823
  public 'bar' => null                                           | IT SHOULD BE HERE
谢谢你的帮助


理查德解决了这个问题。所有这些都是关于字段映射的正确顺序。它们的顺序必须与sql相同。看见