Обновление : я считаю, что вам не нужно использовать lower
, потому что MySQL like
будет соответствовать регистронезависимому по умолчанию, поэтому просто используйте:
return self::where($field, 'like', "%{$value}%");
Кажется, проблема в том, что двойная кавычка "
ускользает от ?
, я думаю, что мы можем избавиться от них, используя concat
. Попробуйте whereRaw
вместо:
return self::whereRaw('lower(?) like lower(concat("%", ?, "%"))', [$field, $value]);
Или:
return self::whereRaw('lower(:field) like lower(concat("%", :value, "%"))', ['field' => $field, 'value' => $value]);