Метод when()
не добавляет оператор if к вашему запросу, это всего лишь способ избавить вас от написания оператора if в вашем коде.
Для достижения того, что вы ищетеможно использовать вложенное предложение orWhere()
:
$contacts = Contact::where('name', 'like', '%' . $term . '%')
->orWhere(function ($query) use($term) {
$query->where('customer_group_id', 8)->where('name', 'like', '%' . $term . '%');
})
->get();
Если в вашем запросе есть что-то большее, чем то, что вы задали в своем вопросе, то вы можете просто обернуть вышеупомянутое в другое предложение where:
$contacts = Contact::where(function ($query) use ($term) {
$query->where('name', 'like', '%' . $term . '%')
->orWhere(function ($query) use ($term) {
$query->where('customer_group_id', 8)->where('name', 'like', '%' . $term . '%');
});
})
->where('some column', 'some value')
->get();