Ошибка печати идентификатора внешнего ключа. Учение Symfony2 - PullRequest
0 голосов
/ 02 февраля 2012

У меня есть объект с именем Keyword, и он состоит из двух строк:

id  comment_id  foo_id  text
2       1         1     Jajajaja :) Hola.
3       2         1     Chao

foo_id и comment_id - это внешние ключи и целочисленные значения.Foo_id из таблицы Foo и comment_id из таблицы Comments.

Я пытаюсь напечатать comment_id и foo_id в шаблоне веточки.

{% for k in keywords %}
    {{ k.id}} , {{ k.text}}, {{ k.comment }}, {{ k.foo}}
{% else %}

, но выдает ошибку:

An exception has been thrown during the rendering of a template ("Catchable Fatal Error: Object of class 
Proxies\PruebasRBundleEntityCommentsProxy could not be 
converted to string in       C:\wamp\www\sym\app\cache\dev\twig\52\c9\3138bf2dc905760b186f2d006484.php 
line 74") in PruebasRBundle:Default:keywords.html.twig at line 24.

Итак, я попытался напечатать значения, которые не являются внешними ключами

Я пытаюсь напечатать comment_id и foo_id в шаблоне веточки.

{% for k in keywords %}
    {{ k.id}} , {{ k.text}} <!--No k.comment no k.foo -->
{% else %}

это работает следующим образом, но я не могу напечатать значения внешних ключей, и они мне нужны.

Это заставляет меня думать, что с отношениями что-то есть: (.

Ответы [ 2 ]

2 голосов
/ 02 февраля 2012

Это потому, что Doctrine автоматически обнаруживает внешний ключ k.comment и возвращает вам объект , представляющий строку внешнего комментария.

Этот объект является экземпляром PruebasRBundle \ Entity \ Comments.(Doctrine2 обернет его в прокси, чтобы облегчить отложенную загрузку).

Ваша проблема в том, что вы пытаетесь привести этот объект в виде строки .

Этим изменением вашей веткинапример:

{% for k in keywords %}
    {{ k.id}} , {{ k.text}}, {{ k.comment.id }}, {{ k.foo}}
{% else %}

Или реализовать метод __toString в вашем Comment классе.

0 голосов
/ 02 февраля 2012

Если вы хотите напечатать числовые значения, попробуйте следующим образом:

{% for k in keywords %}
    {{ k.id}} , {{ k.text}}, {{ k.comment_id }}, {{ k.foo_id}}
{% else %}

Если вы хотите напечатать некоторое значение из связанных сущностей, попробуйте создать магический метод __toString () для сущностейФу и комментарии.Тогда:

{% for k in keywords %}
    {{ k.id}} , {{ k.text}}, {{ k.comments }}, {{ k.foo}}
{% else %}
...