doubian6241 2017-08-01 17:45
浏览 123
已采纳

在树枝中显示Symfony中JOIN查询的结果

I have 2 tables which are not related by ORM so I do theJOIN as follows:

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

When I send the query to twig to show it on the screen it shows me an error.

This is the code in twig:

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

And the error is this:

Neither the property "orderid" nor one of the methods "orderid()", "getorderid()"/"isorderid()" or "__call()" exist and have public access in class "BackendBundle\Entity\Users"

If I run twig this code:

{{dump(pagination)}}

It correctly shows me what the query returns:

  #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 ▶}
    }

My question is how can I show this result in twig ??

  • 写回答

1条回答 默认 最新

  • douguai7291 2017-08-02 04:03
    关注

    After reviewing and trying to solve this problem. Finally create the relationship in the files and between the 2 tables in this way:

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

    Also in the Entity:

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

    I updated the database:

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

    And I make the query in this way:

    $dql="SELECT u, o
          FROM BackendBundle:Orders o
          JOIN o.user u";
    $query=$em->createQuery($dql);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 乌班图ip地址配置及远程SSH
  • ¥15 怎么让点阵屏显示静态爱心,用keiluVision5写出让点阵屏显示静态爱心的代码,越快越好
  • ¥15 PSPICE制作一个加法器
  • ¥15 javaweb项目无法正常跳转
  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 java 的protected权限 ,问题在注释里
  • ¥15 这个是哪里有问题啊?