Zend3 iLike在Postgresql中搜索

时间:2017-11-15 03:51:54

标签: php postgresql zend-framework

我的表中有数据,数据库Postgresql,大小写,大写,ex。 '苹果'。 我有一个搜索输入文本字段。如何在我的数据库中将数据转换为小写,以便在我在文本字段中键入“apple”时返回“Apple”。

$select->where->like(Fruit::fruit_name, "%" . strtoupper($fruitName) . "%");

2 个答案:

答案 0 :(得分:0)

您应该使用expression来执行此操作,或者只使用where而不喜欢。

If you provide a string, this string will be used to create a Zend\Db\Sql\Predicate\Expression instance, and its contents will be applied as-is, with no quoting:

您是否尝试过以下操作:

$select->where(sprintf('%s iLIKE %%%s%%', Fruit::fruit_name, strtoupper($fruitName));

答案 1 :(得分:0)

找到了解决方法:

use Zend\Db\Sql\Expression;
$upperExpr = new Expression('LOWER(?)', [Fruit::fruit_name], [Expression::TYPE_IDENTIFIER]);
$select->where->like($upperExpr, "%" . mb_strtolower($fruitName, 'UTF-8') . "%");

或者如果没有'äÄööüüÜ',则只有 strtolower();)

这将创建正确的SQL语句。