1

「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 を使い始めたばかりなので、これが可能かどうかはわかりません。提案してください。

4

0 に答える 0