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にありますのでご参照ください。
Filed under: データベース, Webフレームワーク | No Comments »

