Предложение HAVING
используется в операторе SELECT
для указания условий фильтрации для группы строк или агрегатов. Предложение HAVING
выполняется после SELECT
, поэтому, если вы примените HAVING
к столбцам, которых нет в group by
или нет в функции aggregate
, тогда оно будет работать как где, что бесполезно, поскольку предложение select уже используется казнены. И я думаю, что только из-за этого красноречивое может вызвать исключение, хотя и не уверен.
Что вы можете сделать, проверьте ключ param
, если он находится в полях group by
, затем примените, имея, если нет, добавьте его как where
условие, подобное этому.
$query = $this->item->select('a.*','b.attribute_code')
->from('items as a')
->join('attr_maps as b','b.number','=','a.number')
->groupBy('a.number');
foreach($param as $key => $value) {
if($key== 'number'){
$query = $query->having($key, '=', $value);
}else{
$query = $query->where($key, '=', $value);
}
}
Вы можете проверить здесь ГДЕ ПРОТИВ ЕГО