【发布时间】:2016-10-26 13:03:14
【问题描述】:
有人可以帮助我进行基本搜索吗? 我就是想不通。 只有当我输入 1 个单词时,我的搜索才有效。但是如果我输入 2,3,4,... 单词,它就不起作用了。
示例:POLYKARBONÁTOVÉ POUZDRO NA MACBOOK(Macbook 的聚碳酸酯封面)
如果我输入“pouzdro”来搜索输入,它会返回所有封面。 如果我输入“Polykarbonátové pouzdro”,它什么也不返回。 如果我输入“Polykarbonátové”,它什么也不返回。
这是我的代码:
if ($keyword != null) {
$keyword = strtolower(preg_replace('/\p{Mn}/u', '', \Normalizer::normalize($keyword, \Normalizer::FORM_KD)));
$keywords = explode(' ', $keyword);
$i = 0;
foreach ($keywords as $key) {
$i++;
if ($i == 1) {
$qb->where("p.title LIKE :keyword$i");
} else {
$qb->andWhere("p.title LIKE :keyword$i");
}
$qb->setParameter("keyword$i", "%" . $key . "%");
}
}
谢谢你:)
编辑: 从日志中查询(我用的是postgresql):
[2016-10-26 16:47:11] 学说.DEBUG: SELECT p0_.id AS id_0, p0_.serial_number AS serial_number_1, p0_.title AS title_2, p0_.url AS url_3, p0_.note AS note_4, p0_.views AS views_5, p0_.price AS price_6, p0_.bought_price AS 买了_price_7, p0_.old_price AS old_price_8, p0_.is_active AS is_active_9, p0_.is_accessory AS is_accessory_10, p0_.is_special AS is_special_11, p0_.quantity AS quantity_12, p0_.created_at AS created_at_13, p0_.updated_at AS updated_at_14, p0_.details_id AS details_id_15, p0_.accessory_category_id AS Accessories_category_id_16 FROM products p0_ WHERE p0_.title LIKE ? ["%polykarbonatove%"] []
[2016-10-26 16:53:52] 学说.DEBUG: SELECT p0_.id AS id_0, p0_.serial_number AS serial_number_1, p0_.title AS title_2, p0_.url AS url_3, p0_.note AS note_4, p0_.views AS views_5, p0_.price AS price_6, p0_.bought_price AS 买了_price_7, p0_.old_price AS old_price_8, p0_.is_active AS is_active_9, p0_.is_accessory AS is_accessory_10, p0_.is_special AS is_special_11, p0_.quantity AS quantity_12, p0_.created_at AS created_at_13, p0_.updated_at AS updated_at_14, p0_.details_id AS details_id_15, p0_.accessory_category_id AS Accessories_category_id_16 FROM products p0_ WHERE p0_.title LIKE ?和 p0_.title 喜欢? ["%polykarbonatove%","%pouzdro%"] []
【问题讨论】:
标签: php symfony doctrine-orm