polidog lab++

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

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

Jun 21, 2013 | tech | doctrine2 symfony2 php

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

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

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

<?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

関連記事

© 2017 polidog lab++