извлечение элемента массива из присоединенного DQL-запроса в symfony2

0

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

запрос из репо:

public function loadAllUsers()
{
    $q = $this
        ->createQueryBuilder('u')
        ->select('u', 'r')
        ->leftJoin('u.roles', 'r')
        ->addOrderBy('u.username', 'ASC');

    return $q->getQuery()->getResult();
}

мой раздел шаблона ветки:

            {% for user in users %}
                <tr>
                    <td>{{ user.id }}</td>
                    <td>{{ user.username }}</td>
                    <td>{{ user.firstname }}</td>
                    <td>{{ user.lastname }}</td>
                    <td>{{ user.email }}</td>
                    <td>{{ user.lastLogged.date }}</td>
                    <td>{{ user.roles.name }}</td> <!-- insert role name in here -->
                    <td>{{ user.isactive }}</td>
                </tr>
            {% endfor %}

вывод из дампа ветки объекта пользователя, отправленного в шаблон

users {#264 ▼
  -id: 1
  -username: "admin"
  -password: "$2y$12$9f76e741dd03a517a5207OkX/gjsP3mif2RxJIs00WyVUj4c3jYPS"
  -firstname: "Matt"
  -lastname: "HB"
  -isActive: true
  -email: "[email protected]"
  -lastLogged: DateTime {#262 }
  -salt: "9f76e741dd03a517a5207b91476079c7"
  -roles: PersistentCollection {#280 ▼
    -snapshot: array:1 [ …1]
    -owner: users {#264}
    -association: array:20 [ …20]
    -em: EntityManager {#121 …10}
    -backRefFieldName: "users"
    -typeClass: ClassMetadata {#265 …}
    -isDirty: false
    -initialized: true
    -coll: ArrayCollection {#281 ▼
      -_elements: array:1 [▼
        0 => roles {#288 ▼
          -id: 6
          -name: "super_admin"
          -role: "ROLE_SUPER_ADMIN"
          -users: PersistentCollection {#289 }
        }
      ]
    }
  }
}

Ive пробовал следующие строки безрезультатно. Мне нужно имя роли для пользователя.

{{ user.roles.name }}
{{ user.roles.coll.name ]}
Теги:
twig

1 ответ

1
Лучший ответ

Вам нужно использовать цикл в шаблоне ветки, чтобы перебирать отдельные роли следующим образом:

{% for role in user.roles %}
    {{ role.name }}
{% endfor %}
  • 0
    Спасибо за ответ. я бы не очень хорошо объяснил себя. Я изменю свой вопрос, чтобы уточнить.
  • 0
    Тем не менее, согласно дампу, у вас есть несколько ролей на пользователя. Вот почему вы не можете просто напечатать один из них, но должны использовать цикл.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню