Две таблицы определены ниже:
---------- types -----------
id type
1 A
2 B
3 C
---------- subtypes ----------
id type_id sub_type
1 1 sub_type1
2 2 sub_type1
3 3 sub_type2
4 1 sub_type3
5 2 sub_type2
Мой PHP НОРМАТИВНЫЙ код такой:
$query = $db->types();
$subTypeFilters = ['sub_type1','sub_type3'];
function filteredQuery($subTypeFilters , $query){
global $db;
$subTypeQuery ;
for($i = 0 ; $i < count($subTypeFilters); $i++){
// if($i>0)
// $subTypeQuery .= ' OR ' ;
$subTypeQuery = $query('id' , $db->sub_type()->where('sub_type', $subTypeFilters[$i])->select('type_id'));
}
echo ($subTypeQuery);
return $subTypeQuery;
}
$query = filteredQuery($subTypeFilters , $query);
Я получаю $ subTypeQuery как select * from types where (id in (1,2)) AND (id in (1))
так что в итоге я получаю только один тип с id = 1, как я могу поместить оператор OR между ними, чтобы получить все типы, которые имеют подтипы, заданные в массиве.
Задача ещё не решена.
Других решений пока нет …