2017-08-01 105 views
1

连接查询的结果我有2个未通过ORM相关的表,所以我做JOIN如下:展在树枝中的Symfony

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

当我将查询发送到树枝上表现出来该屏幕显示我一个错误。

这是twig的代码:

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

和错误是这样的:

无论是属性 “订单ID”,也不的方法 “的OrderID()” 之一, “getorderid () “/” isorderid()”或 “__call()” 存在并具有在公共类访问 “BackendBundle \实体\用户”

如果我运行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: "[email protected]" 
     -yourname: null 
     -firstname: "GGGG" 
     -lastname: "IIIIII" 
     -middlename: "" 
     -address: "oooooooooo" 
     -address2: "" 
     -apartment: "" 
     -pobox: "" 
     -city: "Monsey" 
     -state: "NY" 
     -zipcode: "88888888" 
     -country: "USA" 
     -countrycode: "US" 
     -email: "[email protected]" 
     -datein: DateTime {#521 ▶} 
    } 

我的问题是我怎么能证明这个结果在树枝?

+0

什么ar你试图在这里实现吗?您当前构建了订单和用户列表,迭代该列表并输出订单将失败,正如您现在看到循环触及第一个用户实体时那样。如果这是有意的,并且您希望在同一个表中列出订单和用户,那么在决定输出哪些实体字段之前,您需要检查当前分页项(ordenes)是哪个实体。我高度期望你不会试图制造一个混乱的订单和用户列表,但是当你没有说出你期望的结果时,推荐一些东西并不容易。 – JimL

+0

也许你的意思是:'{{for fordedene in pagination.items }}' – Keloo

+0

感谢您的意见。 JimL - 我希望能够显示一张包含用户订单信息的表格。 – juanitourquiza

回答

0

经过审查并试图解决这个问题。最后创建的文件和2个表之间这样的关系:我更新了数据库

//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 

我做

//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 

另外在实体以这种方式查询:

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