列の製品名を持つテーブルがあるとします。様々な製品があります。製品名とキーワードが一致する表からいくつかのキーワードを見つけようとしています。たとえば、{nokia, lumia, 510} のような要素を持つ配列 $keyword があります。現在、私のデータベースには、多数の nokia lumia 製品を含むテーブルがあります。データベースから検索するためにこのクエリを渡している間、dataProvider 内のすべての nokia lumia 製品が取得されます。私がやっていることは、基本的に、各キーワードを取得して、%keyword% のような検索を行うことです。このようなもの。
foreach($keywords as $k)
$array[] = "product_name LIKE '%$k%'";
$criteria->condition = implode(" OR ", $array);
product_name のキーワードのいずれかを含むすべての結果が得られます。これで問題ありません。しかし、キーワードの一致数に応じてクエリを短縮したいと考えています。同様に、product_name が「Nokia Lumia 510」の場合、両方の 3 つのケースに一致し、「Nokia Lumia」製品の残りの後に 1 番目の位置にあるはずです。これは、2 つのキーワードが一致しているためです。yiiでの作り方。