Sometimes values to filter for could include commas. This is why you can specify the delimiter symbol using the QueryBuilderRequest
to overwrite the default behaviour.
QueryBuilderRequest::setArrayValueDelimiter('|'); QueryBuilder::for(Model::class) ->allowedFilters(AllowedFilter::exact('voltage')) ->get();
Note that this applies to ALL values for filters, includes and sorts
##Usage
There are multiple opportunities where the delimiter can be set.
You can define it in a ServiceProvider
to apply it globally, or define a middleware that can be applied only on certain Controllers
.
public function boot() { QueryBuilderRequest::setArrayValueDelimiter(';'); } public function handle($request, $next) { QueryBuilderRequest::setArrayValueDelimiter(';'); return $next($request); }
You can also set the delimiter for each feature individually:
QueryBuilderRequest::setIncludesArrayValueDelimiter(';'); QueryBuilderRequest::setAppendsArrayValueDelimiter(';'); QueryBuilderRequest::setFieldsArrayValueDelimiter(';'); QueryBuilderRequest::setSortsArrayValueDelimiter(';'); QueryBuilderRequest::setFilterArrayValueDelimiter(';');
You can override the default delimiter for single filters:
AllowedFilter::exact('id', 'ref_id', true, ';');