Skip to content

Commit d5fc900

Browse files
committed
Only qualify base columns during quick searches
All other columns are already qualified relative to the base model. This is usually sufficient because qualification is only required if applied to a query, which isn't happening at this stage. fixes #979
1 parent b18db1c commit d5fc900

File tree

2 files changed

+11
-6
lines changed

2 files changed

+11
-6
lines changed

library/Icingadb/Web/Control/SearchBar/ObjectSuggestions.php

+6-2
Original file line numberDiff line numberDiff line change
@@ -121,8 +121,12 @@ protected function createQuickSearchFilter($searchTerm)
121121

122122
$quickFilter = Filter::any();
123123
foreach ($model->getSearchColumns() as $column) {
124-
$where = Filter::like($resolver->qualifyColumn($column, $model->getTableName()), $searchTerm);
125-
$where->metaData()->set('columnLabel', $resolver->getColumnDefinition($where->getColumn())->getLabel());
124+
if (strpos($column, '.') === false) {
125+
$column = $resolver->qualifyColumn($column, $model->getTableName());
126+
}
127+
128+
$where = Filter::like($column, $searchTerm);
129+
$where->metaData()->set('columnLabel', $resolver->getColumnDefinition($column)->getLabel());
126130
$quickFilter->add($where);
127131
}
128132

library/Icingadb/Web/Controller.php

+5-4
Original file line numberDiff line numberDiff line change
@@ -307,10 +307,11 @@ protected function prepareSearchFilter(Query $query, string $search, Filter\Any
307307
{
308308
$columns = array_merge($query->getModel()->getSearchColumns(), $additionalColumns);
309309
foreach ($columns as $column) {
310-
$filter->add(Filter::like(
311-
$query->getResolver()->qualifyColumn($column, $query->getModel()->getTableName()),
312-
"*$search*"
313-
));
310+
if (strpos($column, '.') === false) {
311+
$column = $query->getResolver()->qualifyColumn($column, $query->getModel()->getTableName());
312+
}
313+
314+
$filter->add(Filter::like($column, "*$search*"));
314315
}
315316
}
316317

0 commit comments

Comments
 (0)