SymfonyにおけるCONCATによる文字列検索

MySQLにてカラムを連結して文字列検索でMySQLのCONCAT関数を利用し、連結したカラムに対して文字列検索を行う方法を紹介しましたが、これをSymfonyに実装する方法を紹介します。
例えば、下記のように、

SELECT * FROM tablename WHERE colA like ‘%keyword%’

単にカラムAに対してkeywordで文字列検索するのであれば、

$c = new Criteria();
$c->add(TablenamePeer::COLA, ‘%keyword%’, Criteria::LIKE);
$Tablenames = TablenamePeer::doSelect($c);

とすればOKですが、下記のように、

SELECT * FROM tablename WHERE CONCAT(colA, colB) like ‘%keyword%’

CONCATを利用しようと思うと、

$con = sfContext::getInstance()->getDatabaseConnection(’propel’);
$query = "SELECT id FROM " .self::TABLE_NAME. " WHERE CONCAT(colA, colB) like ‘%keyword%’";
$stmt = $con->prepareStatement($query);
$rs = $stmt->executeQuery();

とする必要があります。
パラメータの指定方法の詳細はこちらのTable 8-1 - SQL and Criteria Object Syntaxにありますのでご参照ください。

MySQLにてカラムを連結して文字列検索

MySQLでカラムAとカラムBを連結して文字列検索したいのだが、どうしたらできるのだろうか?といろいろ調べていたら、回答は

にありました。つまり、concatenation(連結)を意味する”CONCAT”を使うと実現できます。例えば、colAとcolBを連結して、keyword検索したい場合、

SELECT * FROM tablename WHERE CONCAT(colA, colB) like ‘%keyword%’

となります。ただし、そのようなDB設計でいいのかを十分検討する必要がありますが。つまり、colAとcolBは連結したデータとして保持した方がいいのではないか?ということです。
私は迷った挙げ句、分離しておいた方が将来的に便利だと思えたので、上記のselect文を実装しました。