tl; dr: Мне нужно показать данные из двух разных таблиц в виде списка генератора администратора Symfony (желательно с помощью оператора JOIN)
Я использую sfDoctrineGuardPlugin
для управления пользователями моего приложения.У каждого пользователя также есть свой профиль, который он может заполнить.Схема (schema.yml
) для таблицы профиля выглядит следующим образом:
sfGuardUserProfile:
connection: doctrine
tableName: sf_guard_user_profile
columns:
sf_guard_user_id: integer(8)
client_id: string(128)
relations:
sfGuardUser:
local: sf_guard_user_id
foreign: id
foreignType: one
onDelete: CASCADE
В данный момент таблица - это client_id и внешний ключ к столбцу id в таблице sfGuardUser. (Да, я знаю, что мне нужен столбец id там только для доступности БД, а больше будет позже)
Я создал администратора для своей таблицы профилей, используя генератор администраторов Symfony,Мне бы хотелось, чтобы мой список в админке выглядел следующим образом (generator.yml
):
config:
...
list:
title: Clients
display: [client_id, sf_guard_user_id, username]
table_method: retrieveProfileList
Однако мой столбец с именем пользователя не работает, и я получаю Doctrine_Record_UnkownPropertyException
из:
Unknown record property / related component "username" on "sfGuardUserProfile"
Я надеялся, что пользовательский метод table_method для заполнения данных для представления списка поможет мне, но мой метод таблицы (в lib/model/sfGuardUserProfileTable.class.php
), похоже, не помогает.Я следовал примеру в Книге Symfony , и этот метод:
public static function retrieveProfileList(Doctrine_Query $q)
{
$rootAlias = $q->getRootAlias();
$q->leftJoin($rootAlias . '.sfGuardUser id');
return $q;
}
Есть какие-нибудь идеи о том, как заставить генератор администратора Symfony отображать представление списка на основе объединения?Или, альтернативно, как вытащить из отдельной модели?