diff --git a/core/modules/views/src/Plugin/views/filter/Combine.php b/core/modules/views/src/Plugin/views/filter/Combine.php index b541009c3dea4d29980db7b5d6a0ad8846f54fe6..d1e25f16759026f97f1507a73d0d6fca83f2e146 100644 --- a/core/modules/views/src/Plugin/views/filter/Combine.php +++ b/core/modules/views/src/Plugin/views/filter/Combine.php @@ -71,7 +71,7 @@ public function query() { $field = $this->view->field[$id]; // Always add the table of the selected fields to be sure a table alias exists. $field->ensureMyTable(); - if (!empty($field->field_alias) && !empty($field->field_alias)) { + if (!empty($field->tableAlias) && !empty($field->realField)) { $fields[] = "$field->tableAlias.$field->realField"; } } diff --git a/core/modules/views/tests/src/Kernel/Handler/FilterCombineTest.php b/core/modules/views/tests/src/Kernel/Handler/FilterCombineTest.php index 6d5b71742d929c92c7f5e3972cc9526ec6c999e9..d1a577fab5e513d094513a3e1716f56deaa34ff3 100644 --- a/core/modules/views/tests/src/Kernel/Handler/FilterCombineTest.php +++ b/core/modules/views/tests/src/Kernel/Handler/FilterCombineTest.php @@ -569,6 +569,61 @@ public function testFilterCombineNot() { $this->assertIdenticalResultset($view, $resultset, $this->columnMap); } + /** + * Tests the combine filter when no realName is used. + */ + public function testFilterCombineNoRealName() { + $view = Views::getView('test_view'); + $view->setDisplay(); + + $fields = $view->displayHandlers->get('default')->getOption('fields'); + $view->displayHandlers->get('default')->overrideOption('fields', $fields + [ + 'name_no_id' => [ + 'id' => 'name_no_id', + 'table' => 'views_test_data', + 'field' => 'name_fail', + 'relationship' => 'none', + ], + ]); + + // Change the filtering. + $view->displayHandlers->get('default')->overrideOption('filters', [ + 'age' => [ + 'id' => 'combine', + 'table' => 'views', + 'field' => 'combine', + 'relationship' => 'none', + 'operator' => 'contains', + 'fields' => [ + 'name_no_id', + 'job', + ], + 'value' => 'iNg', + ], + ]); + + $this->executeView($view); + $resultset = [ + [ + 'name' => 'John', + 'job' => 'Singer', + ], + [ + 'name' => 'George', + 'job' => 'Singer', + ], + [ + 'name' => 'Ringo', + 'job' => 'Drummer', + ], + [ + 'name' => 'Ginger', + 'job' => NULL, + ], + ]; + $this->assertNotIdenticalResultset($view, $resultset, $this->columnMap); + } + /** * Additional data to test the NULL issue. */