2017-08-01 8 views
1

に参加クエリの結果を小枝で私がORMによって関連していない2つのテーブルを持って次のように私は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 %} 

とエラーがこれです:

プロパティ "受注コード" も方法の一つ "受注コード()"、 「getorderidどちらも"BackendBundle \ Entity \ Users"クラスのpublic アクセス権を持っています。

私は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

あなたはここで達成しようとしていますか?現在、オーダーとユーザーのリストを作成し、それを反復して、ループが最初のユーザーエンティティに当たったときに表示されるように、出力順序は失敗します。これが意図されていて、同じテーブルに注文とユーザーをリストしたい場合は、どのエンティティフィールドを出力するかを決める前に、現在のページネーション項目(またはインデント)がどのエンティティであるかをチェックする必要があります。私は非常にあなたが注文とユーザーの混乱したリストを構築しようとしていないと期待していますが、あなたが期待した結果を言っていないときに何かを推薦するのは容易ではありません – JimL

+0

あなたはおそらくあなたが意味していました: '{{oratees in pagination.items }} ' – Keloo

+0

あなたのコメントをありがとう。 JimL - 私は、ユーザーが作成した注文の情報を含む表を表示できるようにしたい。 – juanitourquiza

答えて

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 

:最後のファイルにして、このように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 

をそして私が作りますこのようなクエリ:

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