代码之家  ›  专栏  ›  技术社区  ›  juanitourquiza

在twig中显示Symfony中连接查询的结果

  •  1
  • juanitourquiza  · 技术社区  · 8 年前

    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 %}
    

    错误是:

    “getorderid()”/“isorderid()”或“_ucall()”存在并具有公共 在“BackendBundle\Entity\Users”类中访问

    如果我跑步

    {{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 回复  |  直到 8 年前
        1
  •  0
  •   juanitourquiza    8 年前

    在回顾并试图解决这个问题之后。最后,以这种方式在文件中以及两个表之间创建关系:

    //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);
    
    推荐文章