假设我有一个包含列产品名称的表。有各种各样的产品。我试图从表格中找出一些与产品名称和关键字相匹配的关键字。 例如,我有一个数组$ keyword,其中包含{nokia,lumia,510}等元素。现在在我的数据库中,我有一张桌子,里面有许多诺基亚lumia产品。当我将此查询传递给数据库进行搜索时,它会将所有nokia lumia产品都放在dataProvider中。我正在做的基本上是,取每个关键字,并在其上放置一个%keyword%search。有点像这样。
foreach($keywords as $k)
$array[] = "product_name LIKE '%$k%'";
$criteria->condition = implode(" OR ", $array);
它提供了包含product_name中任何关键字的所有结果,这很好。但我想根据关键字中的匹配数来缩短查询。比如,如果我有一个product_name“诺基亚Lumia 510”,那么它匹配bosth三种情况,那么它应该在第一个位置,在“诺基亚Lumia”产品的其余部分之后,因为它们匹配2个关键字。如何在yii上制作它。
答案 0 :(得分:0)
使用带条件的order by子句