仅在所有关键字匹配 Laravel 的情况下检索结果
Retrieve results only where ALL keywords match Laravel
我正在尝试根据所有关键字匹配的标签来拉取用户。
使用这个工作代码:
$search_terms = array('keyword 1', 'keyword 2', 'keyword 3', 'keyword 4');
$search_results = User::where('user_type_id', 1)
->where('approved', 1)
->whereHas('tags', function ($q) use($search_terms) {
$q->whereIn('name', $search_terms);
})->get();
目前我正在使用 whereIn()
来执行此操作,但即使用户在所有输入的关键字中只有 1 个匹配项,它也会吸引用户。因此,如果我们有关键字 1、关键字 2、关键字 3、关键字 4。查询应该只提取给定用户的标签 table 中所有关键字都匹配的结果。
我认为这可行,请检查一下
$search_terms = array('keyword 1', 'keyword 2', 'keyword 3', 'keyword 4');
$search_results = User::where('user_type_id', 1)
->where('approved', 1)
->whereHas("tags", function($q) use ($search_terms) {
$q->whereIn("name", $search_terms);
}, "=", count($search_terms));
->get();
我正在尝试根据所有关键字匹配的标签来拉取用户。
使用这个工作代码:
$search_terms = array('keyword 1', 'keyword 2', 'keyword 3', 'keyword 4');
$search_results = User::where('user_type_id', 1)
->where('approved', 1)
->whereHas('tags', function ($q) use($search_terms) {
$q->whereIn('name', $search_terms);
})->get();
目前我正在使用 whereIn()
来执行此操作,但即使用户在所有输入的关键字中只有 1 个匹配项,它也会吸引用户。因此,如果我们有关键字 1、关键字 2、关键字 3、关键字 4。查询应该只提取给定用户的标签 table 中所有关键字都匹配的结果。
我认为这可行,请检查一下
$search_terms = array('keyword 1', 'keyword 2', 'keyword 3', 'keyword 4');
$search_results = User::where('user_type_id', 1)
->where('approved', 1)
->whereHas("tags", function($q) use ($search_terms) {
$q->whereIn("name", $search_terms);
}, "=", count($search_terms));
->get();