Doctrine: how to create a query using "LIKE REPLACE"?
this SQL clause is working OK:
SELECT * FROM `sf_guard_user` WHERE nombre_apellidos LIKE REPLACE('Mar Sanz',' ','%')
Now I'm trying to write this query for Doctrine. I have tried this:
$query->andWhere(sprintf('%s.%s LIKE REPLACE (?," ","%开发者_开发百科")',
$query->getRootAlias(), $fieldName),
'Mar Sanz'));
but I get this error:
Warning: sprintf() [function.sprintf]: Too few arguments
Any idea?
Regards
Javi
A '%' must be doubled ('%%') to mean a literal % inside of a pattern string you sent to sprintf
or printf
:
$query->andWhere(sprintf('%s.%s LIKE REPLACE (?," ","%%")',
$query->getRootAlias(), $fieldName),
'Mar Sanz'));
Suggestion: Why not run the string-replacement function inside the code before you send it to the database server?
$query->andWhere(
sprintf(
'%s.%s LIKE ?',
$query->getRootAlias(),
$fieldName
),
preg_replace('/ /', '%', 'Mar Sanz')
);
精彩评论