【发布时间】:2021-12-06 09:37:41
【问题描述】:
我有这个查询返回包含search 字的产品。如何根据search 单词的出现次数对它们进行排序?
$products = Product::where('name','LIKE','%'.$search.'%')
->orWhere('name', 'like', '%' . str_replace(' ', '-', $search) . '%')
->orWhere('features','LIKE','%'.$search.'%')->get();
我有 SQL 查询,但我不知道如何将它与上面的查询结合起来:
SELECT *,
(LENGTH(`name`) - LENGTH(REPLACE(`name`, $search, ''))) / LENGTH('test') `appears_in_text`,
(LENGTH(`features`) - LENGTH(REPLACE(`features`, $search, ''))) / LENGTH($search) `appears_in_subject`,
(LENGTH(CONCAT(`name`,' ',`features`)) - LENGTH(REPLACE(CONCAT(`name`,' ',`features`), $search, ''))) / LENGTH($search) `occurences`
FROM
`products`
WHERE (name LIKE $search OR features LIKE $search)
ORDER BY `occurences` DESC
【问题讨论】: