Doctrine2からテーブルのメタデータを取得する方法

Twitter ツイート Hatena Bookmark ブックマーク

最近Symfony2使っているんですが、なかなか慣れません。
というか自由過ぎてどう書いたら良いか答えが見つかりません。

まあそんな話はさておき、今日は実装してて、テーブルのメタデータが欲しくなったので、その実装方法をメモ代わりに残しておきます。
まあ結局メタデータ使わなくなったんで意味のないコードになってしまったのですが…

非常に簡単で、コントローラ内で以下のように書けば取得できます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php
namespace My\HogeBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpKernel\Exception\BadRequestHttpException;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Response;

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
/**
 *
 * @Route("/Hoge")
 */
class HogeController
{
  /**
   * @Route("/meta",name="hoge_meta")
   * @Template()
   */
  public function metaAction() {
          $em = $this->getDoctrine()->getManager();
          $cmd = $em->getMetadataFactory();
          $meta = $cmd->getMetadataFor('My\HogeBundle\Entity\Hoge');

    // 一覧が見たい場合は以下のようにするとできるよ
    // var_dump($data->fieldMappings);
          return array('meta' => $meta);
  }
}

こうやってmetaDataクラス取得して後は煮るなり焼くなり好きにすれば良いと思います。

※環境的にはSymfony2.2系使って実装しています。

comments powered by Disqus
Built with Hugo
テーマ StackJimmy によって設計されています。