在树枝中显示Symfony

时间:2017-08-01 17:45:38

标签: php symfony join twig dql

我有两张与ORM无关的表格,所以我按以下方式执行JOIN

$dql="SELECT u, o
      FROM BackendBundle:Orders o
      JOIN BackendBundle:Users u
      WITH o.userid=u.id";
$query=$em->createQuery($dql);

当我将查询发送到twig以在屏幕上显示时,它会显示错误。

这是twig中的代码:

{% for ordenes in pagination %}
  <td>{{ ordenes.orderid }}</td>
  <td>{{ ordenes.orderdate|date("Y-m-d") }}</td>
{% endfor %}

错误是这样的:

  

财产&#34; orderid&#34;也不是其中一种方法&#34; orderid()&#34;,   &#34; getorderid()&#34; /&#34; isorderid()&#34;或&#34; __ call()&#34;存在并公开   在课堂上访问&#34; BackendBundle \ Entity \ Users&#34;

如果我运行twig此代码:

{{dump(pagination)}}

它正确显示了查询返回的内容:

  #currentPageNumber: 3
  #numItemsPerPage: 20
  #items: array:40 [▼
    0 => Orders {#522 ▼
      -orderid: 158
      -orderdate: DateTime {#476 ▶}
      -ordernumber: "FFFFFFFFFFF"
      -customername: "UUUUUUUUUUUU"
      -customeraddress: "OOOOOO"
      -countrycode: "US"
      -shippingaddress: "PPPPPP"
      -status: "Ordered"
      -subtotal: "5.00"
      -shippingcost: "2.82"
      -tax: "0.00"
      -discount: "0.00"
      -totalorder: "7.82"
      -shippingcarrier: "Fedex"
      -userid: "1206"
    }
    1 => Users {#525 ▼
      -id: 1206
      -username: "xxxxxxxxxxxxxx@hotmail.com"
      -yourname: null
      -firstname: "GGGG"
      -lastname: "IIIIII"
      -middlename: ""
      -address: "oooooooooo"
      -address2: ""
      -apartment: ""
      -pobox: ""
      -city: "Monsey"
      -state: "NY"
      -zipcode: "88888888"
      -country: "USA"
      -countrycode: "US"
      -email: "xxxxxxxxxxx@hotmail.com"
      -datein: DateTime {#521 ▶}
    }

我的问题是如何在树枝上显示这个结果?

1 个答案:

答案 0 :(得分:0)

审核并尝试解决此问题。最后以这种方式在文件中和两个表之间创建关系:

//BackendBundle\Entity\Orders:
indexes:
    fk_order_user1_idx:
        columns:
            - user_id
......
manyToOne:
    user:
        targetEntity: Users
        cascade: {  }
        fetch: LAZY
        mappedBy: null
        inversedBy: null
        joinColumns:
            user_id:
                referencedColumnName: id
        orphanRemoval: false

同样在实体中:

//Orders.php
/**
 * @var \BackendBundle\Entity\Users
 */
private $user;
......
/**
 * Set user
 *
 * @param \BackendBundle\Entity\Users $user
 *
 * @return Users
 */
public function setUser(\BackendBundle\Entity\Users $user = null)
{
    $this->user = $user;

    return $this;
}

/**
 * Get user
 *
 * @return \BackendBundle\Entity\Users
 */
public function getUser()
{
    return $this->user;
}

我更新了数据库:

php bin/console doctrine:schema:update --force

我以这种方式进行查询:

$dql="SELECT u, o
      FROM BackendBundle:Orders o
      JOIN o.user u";
$query=$em->createQuery($dql);