我正在使用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
现在,table是一个client_id,是sfGuardUser表上id列的外键。 (是的,我知道我需要一个id列,仅用于DB可访问性,稍后会有更多内容)
我使用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 Book中跟随了一个示例,这是方法:
public static function retrieveProfileList(Doctrine_Query $q)
{
$rootAlias = $q->getRootAlias();
$q->leftJoin($rootAlias . '.sfGuardUser id');
return $q;
}
有关如何让Symfony管理生成器显示基于连接的列表视图的任何想法?或者,如何从单独的模型中拉出来?
答案 0 :(得分:2)
我已经回答了我自己的问题!
我将sfGuardUserProfileTable
课程上的联接方法更改为我可以更好理解的内容(感谢this有用的链接):
public static function retrieveProfileList(Doctrine_Query $q)
{
return $q->select('r.*, u.username')
->leftJoin('r.sfGuardUser u');
}
在getUsername
模型类
sfGuardUserProfile
方法
public function getUsername()
{
return $this->sfGuardUser->username;
}
谢谢你是我的橡皮鸭,所以!