Symfony2 直接SQLを実行

ORMを使うパターン

use Doctrine\ORM\Query\ResultSetMapping;
use Doctrine\ORM\Query\ResultSetMappingBuilder;
use Doctrine\ORM\EntityRepository;
use Doctrine\ORM\Tools\Setup; 

//とりあえず、たくさんインポート  中略    
$em = $this->getDoctrine()->getEntityManager();  
$rsm = new ResultSetMapping();  
$rsm->addEntityResult('Acme\HelloBundle\Entity\Post', 'p');  
$rsm->addFieldResult('p', 'id', 'id');
//第2引数がDBカラム名、第3引数がエンティティーのフィールド名  
$rsm->addFieldResult('p', 'name', 'name');  
$query = $em->createNativeQuery('SELECT id, name FROM Post WHERE id = ?', $rsm);  
$query->setParameter(1, 123);  
$resulet =  $query->getArrayResult();//getArrayResult()は配列で取得    
//getResult() もあるがなんだかよくわからない。

 

 

ORMを使わないパターン

$stmt = $this->getDoctrine()->getEntityManager()->getConnection()->prepare('select * from mimicry_ranking');
$stmt->execute();
$result = $stmt->fetchAll();//どうやってバインドするかは不明

//まあでもいい感じ結果取得できてます。

 

 

参考URL

http://blog.sarabande.jp/post/28000871169

http://sf2.memosdedev.com/creer-une-requete-sql-native-dans-symfony2-avec-doctrine2.html

http://docs.doctrine-project.org/en/latest/reference/native-sql.html#the-nativequery-class

http://taka512.hatenablog.com/entry/20111224/1324738121

http://blog.xfloyd.net/?p=600

http://docs.symfony.gr.jp/symfony2/cookbook/doctrine/dbal.html

http://docs.symfony.gr.jp/symfony2/book/doctrine.html?highlight=dql