tl;dr: Symfony admin ジェネレーターのリスト ビューに 2 つの異なるテーブルのデータを表示する必要があります (できれば 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 であり、sfGuardUser テーブルの id 列への外部キーです。 (はい、DB アクセシビリティのためだけにそこに id 列が必要であることはわかっています。後でさらに追加されます)
Symfony admin ジェネレーターを使用してプロファイル テーブルの管理者を作成しました。管理者のリスト ビューを次のようにしたいと思います ( 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 admin ジェネレーターにリスト ビューを表示させる方法に関するアイデアはありますか? または、代わりに、別のモデルからプルする方法は?