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にありますのでご参照ください。

Leave a Reply