「Users」と「UsersMeta」という 2 つのエンティティがあります。AliDataTable Bundle を使用して 2 つのテーブルのデータを表示していますが、テーブル間に 1 対多の関係があります。したがって、参加すると正しい結果が得られますが、そのようにしたくありません。2 つのテーブルに次のようなデータがあるとします。
ユーザー
id|firstname|lastname|email
1 |abc |xyz |abc@abc.com
2 |def |zyx |def@test.com
ユーザーメタ
Meta_id|User_id|fieldname|fieldValue
1|1 |dob |ddd
2|1 |gender |ggg
3|2 |dob |ddd2
4|2 |gender |ggg2
AliDataTable を使用してリストを取得しています
Firstname|lastname|Email |Fieldname|Fieldvalue
abc|xyz |abc@test.com|dob |ddd
abc|xyz |abc@test.com|gender |ggg
def|zyx |def@test.com|dob |ddd2
def|zyx |def@test.com|gender |ggg2
AliDataTable構成の私のサンプルコードは次のとおりです
private function _DataTable()
{
$controller_instance = $this;
$datatable = $this->get('datatable');
return $datatable->setEntity("xxx\Entity\ User ", "u")
->setFields(
array(
"First Name" => 'u.firstName',
"Last Name" => 'u.lastName',
"Email" => 'u.email',
"FieldName" => 'um.fieldName',
"FieldValue" => 'um.fieldValue',
"_identifier_" => 'u.userId')
)
->addJoin('u. UsersMeta', 'um', \Doctrine\ORM\Query\Expr\Join::INNER_JOIN)
->setWhere(
'u.userId = um.userId
)
})
->setHasAction(true);
}
データを次のように表示したい
Firstname|lastname|Email |dob |gender
abc|xyz |abc@test.com|ddd |ggg
def|zyx |def@test.com|ddd2 |ggg2
では、AliDataTable bundle を使用して上記の形式でデータを取得するにはどうすればよいですか? フィールド値のレンダリングをカスタマイズできることを読みましたが、上記の場合、テーブルのレンダリングを変更する必要があります。Symfony2 を使い始めたばかりなので、これが可能かどうかはわかりません。提案してください。