【发布时间】:2019-05-19 19:32:44
【问题描述】:
我有一个查询,可以让所有用户在 html 复选框数组中选择某些特定技能,这些值是技能数据库中的 Id。
当您拥有例如 Laravel 和 SQL 技能时,搜索查询应该仅在用户输入 laravel 和 sql 或其中之一时返回您,否则不应显示您。
现在发生的情况是另一种方式:当您选择 laravel OR sql 时,它会在用户列表中显示您,但如果您同时选择两者,您将不会,但您仍然拥有这些技能。如果我将 where 替换为 orWhere,它会正常运行,但即使我们输入了您没有的其他技能,也会将您显示为相关用户。
这是我的查询的一部分:
->when(isset($data['skills']) and $data['skills'] != null, function ($query) use ($data){
$query->whereHas('skills', function ($subQuery) use ($data) {
for($i = 0; $i < count($data['skills']); $i++){
$subQuery->where('skills.id', $data['skills'][$i]);
}
});
})
for 只是为了打开 t 他从前面传来的技能数组数据。
任何帮助都会很有用。谢谢
【问题讨论】:
标签: laravel