1

假设我有一个带有列产品名称的表。有各种各样的产品。我试图从表中找出与产品名称与关键字匹配的一些关键字。例如,我有一个数组 $keyword,其中包含 {nokia, lumia, 510} 等元素。现在在我的数据库中,我有一个包含许多诺基亚 lumia 产品的表。当我通过这个查询从数据库中进行搜索时,它需要 dataProvider 中的所有 nokia lumia 产品。我所做的基本上是,获取每个关键字并对其进行类似 %keyword% 的搜索。像这样的东西。

foreach($keywords as $k)
                $array[] = "product_name LIKE '%$k%'";

            $criteria->condition = implode(" OR ", $array);

它给出了包含 product_name 中任何关键字的所有结果,这很好。但是我想根据关键字中的匹配数来缩短查询。就像,如果我有一个产品名称“Nokia Lumia 510”,那么它匹配这三个案例,那么它应该在第 1 位,在“Nokia Lumia”产品的其余部分之后,因为它们匹配 2 个关键字。如何在 yii 上制作。

4

1 回答 1

0

使用带有 case 条件的 order by 子句

于 2013-02-04T06:24:00.977 回答