2

2 つのクラス (プロトコルと履歴) の間に双方向の 1 対多の関係があります。特定のプロトコルを検索すると、そのプロトコルに関連付けられたすべての履歴エントリが表示されるはずです。

テンプレートのレンダリング中に、次を渡します。

return $this->render('FunarbeProtocoloAdminBundle:Protocolo:show.html.twig', array(
        'entity'      => $entity,
        'delete_form' => $deleteForm->createView(),
        'history' => $entity->getHistory(),
    )
);

entity->getHistory()配列の代わりに PersistentCollection を返すため、次の場合にエラーが発生します。

{% for hist in history %}
<tr>
    <td>{{ hist.dtOcorrencia|date('d/m/Y H:i') }}</td>
    <td>{{ hist.dtRetorno|date('d/m/Y H:i') }}</td>
</tr>
{% endfor %}

I を渡す代わりに$entity->getHistory()を渡す$em->getRepository('MyBundle:History')->findByProtocol($entity)と、正常に動作します。しかし、双方向の関係を持つ主なポイントは、リポジトリを開いたり、新しい結果セットを明示的に開いたりすることを避けることだと思います。

私は何か間違ったことをしていますか?どうすればいいですか?

4

3 に答える 3

3

私がしなければならなかったのは、TWIGで次のように呼び出すことだけでした:

{% for hist in entity.history %}

他の答えはどれも私にとってはうまくいきませんでした。ゲッターを使用する代わりに、小枝でプロパティを直接呼び出す必要があります。理由はわかりませんが、うまくいきました。

ありがとう。

于 2013-01-08T12:02:18.170 に答える
1

これを試して:

return $this->render('FunarbeProtocoloAdminBundle:Protocolo:show.html.twig'
    ,array(
          'entity'      => $entity,
         ,'delete_form' => $deleteForm->createView(),
         ,'history'     => $entity->getHistory()->toArray()
                                                ///////////
    )
);
于 2013-01-07T23:35:03.813 に答える
0

あなたのコードは問題ありません。私はいつも面倒を省き、コレクションを自分のビューに渡すのではなく、小枝に入れます。これも試すことができます。

レンダリング コードの変更

return $this->render('FunarbeProtocoloAdminBundle:Protocolo:show.html.twig', array(
        'entity'      => $entity,
        'delete_form' => $deleteForm->createView(),
    )
);

小枝で履歴に直接アクセスしたい。

小枝

{% for hist in entity.getHistory() %}
    <tr>
        <td>{{ hist.dtOcorrencia|date('d/m/Y H:i') }}</td>
        <td>{{ hist.dtRetorno|date('d/m/Y H:i') }}</td>
    </tr>
{% endfor %}

変更後の結果が同じ場合は、ヒストで配列をチェックしてみてください。ネストされている可能性があります。永続的なコレクションはそれを行う傾向があります...

{% for history in entity.getHistory() %}
    {% for hist in history %}
        <tr>
            <td>{{ hist.dtOcorrencia|date('d/m/Y H:i') }}</td>
            <td>{{ hist.dtRetorno|date('d/m/Y H:i') }}</td>
        </tr>
    {% endfor %}
{% endfor %}
于 2013-01-07T14:20:41.560 に答える