diff --git a/core/modules/views/src/Plugin/views/display/EntityReference.php b/core/modules/views/src/Plugin/views/display/EntityReference.php
index c8ab57c499..d5ecc1af63 100644
--- a/core/modules/views/src/Plugin/views/display/EntityReference.php
+++ b/core/modules/views/src/Plugin/views/display/EntityReference.php
@@ -3,7 +3,6 @@
 namespace Drupal\views\Plugin\views\display;
 
 use Drupal\Core\Database\Connection;
-use Drupal\Core\Database\Query\Condition;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 
 /**
@@ -170,7 +169,7 @@ public function query() {
       }
 
       // Multiple search fields are OR'd together.
-      $conditions = new Condition('OR');
+      $conditions = $this->view->query->getConnection()->condition('OR');
 
       // Build the condition using the selected search fields.
       foreach ($style_options['options']['search_fields'] as $field_id) {
diff --git a/core/modules/views/src/Plugin/views/filter/BooleanOperator.php b/core/modules/views/src/Plugin/views/filter/BooleanOperator.php
index 81a31880c3..fd46fa804d 100644
--- a/core/modules/views/src/Plugin/views/filter/BooleanOperator.php
+++ b/core/modules/views/src/Plugin/views/filter/BooleanOperator.php
@@ -2,7 +2,6 @@
 
 namespace Drupal\views\Plugin\views\filter;
 
-use Drupal\Core\Database\Query\Condition;
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\views\Plugin\views\display\DisplayPluginBase;
 use Drupal\views\ViewExecutable;
@@ -236,12 +235,12 @@ protected function queryOpBoolean($field, $query_operator = self::EQUAL) {
     if (empty($this->value)) {
       if ($this->accept_null) {
         if ($query_operator === self::EQUAL) {
-          $condition = (new Condition('OR'))
+          $condition = ($this->query->getConnection()->condition('OR'))
             ->condition($field, 0, $query_operator)
             ->isNull($field);
         }
         else {
-          $condition = (new Condition('AND'))
+          $condition = ($this->query->getConnection()->condition('AND'))
             ->condition($field, 0, $query_operator)
             ->isNotNull($field);
         }
diff --git a/core/modules/views/src/Plugin/views/filter/StringFilter.php b/core/modules/views/src/Plugin/views/filter/StringFilter.php
index 229eb90733..88639dff15 100644
--- a/core/modules/views/src/Plugin/views/filter/StringFilter.php
+++ b/core/modules/views/src/Plugin/views/filter/StringFilter.php
@@ -3,7 +3,6 @@
 namespace Drupal\views\Plugin\views\filter;
 
 use Drupal\Core\Database\Connection;
-use Drupal\Core\Database\Query\Condition;
 use Drupal\Core\Form\FormStateInterface;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 
@@ -330,7 +329,7 @@ protected function opContains($field) {
   }
 
   protected function opContainsWord($field) {
-    $where = $this->operator == 'word' ? new Condition('OR') : new Condition('AND');
+    $where = $this->operator == 'word' ? $this->query->getConnection()->condition('OR') : $this->query->getConnection()->condition('AND');
 
     // Don't filter on empty strings.
     if (empty($this->value)) {
diff --git a/core/modules/views/src/Plugin/views/query/Sql.php b/core/modules/views/src/Plugin/views/query/Sql.php
index 92c9fc2a8c..68b46698eb 100644
--- a/core/modules/views/src/Plugin/views/query/Sql.php
+++ b/core/modules/views/src/Plugin/views/query/Sql.php
@@ -885,7 +885,7 @@ public function clearFields() {
    * @code
    * $this->query->addWhere(
    *   $this->options['group'],
-   *   (new Condition('OR'))
+   *   ($this->query->getConnection()->condition('OR'))
    *     ->condition($field, $value, 'NOT IN')
    *     ->condition($field, $value, 'IS NULL')
    * );
@@ -1111,13 +1111,16 @@ protected function buildCondition($where = 'where') {
     $has_arguments = FALSE;
     $has_filter = FALSE;
 
-    $main_group = new Condition('AND');
-    $filter_group = $this->groupOperator == 'OR' ? new Condition('OR') : new Condition('AND');
+    /** @var \Drupal\Core\Database\Connection $connection */
+    $connection = $this->getConnection();
+
+    $main_group = $connection->condition('AND');
+    $filter_group = $this->groupOperator == 'OR' ? $connection->condition('OR') : $connection->condition('AND');
 
     foreach ($this->$where as $group => $info) {
 
       if (!empty($info['conditions'])) {
-        $sub_group = $info['type'] == 'OR' ? new Condition('OR') : new Condition('AND');
+        $sub_group = $info['type'] == 'OR' ? $connection->condition('OR') : $connection->condition('AND');
         foreach ($info['conditions'] as $clause) {
           if ($clause['operator'] == 'formula') {
             $has_condition = TRUE;
diff --git a/core/modules/views/tests/src/Unit/Plugin/display/EntityReferenceTest.php b/core/modules/views/tests/src/Unit/Plugin/display/EntityReferenceTest.php
new file mode 100644
index 0000000000..9365b85706
--- /dev/null
+++ b/core/modules/views/tests/src/Unit/Plugin/display/EntityReferenceTest.php
@@ -0,0 +1,63 @@
+<?php
+
+namespace Drupal\Tests\views\Unit\Plugin\display;
+
+use Drupal\Core\Database\Connection;
+use Drupal\Tests\UnitTestCase;
+use Drupal\views\Entity\View;
+use Drupal\views\Plugin\views\display\EntityReference;
+use Drupal\views\Plugin\views\query\Sql;
+use Drupal\views\ViewExecutable;
+
+/**
+ * @coversDefaultClass \Drupal\views\Plugin\views\display\EntityReference
+ * @group views
+ */
+class EntityReferenceTest extends UnitTestCase {
+
+  /**
+   * @covers ::query
+   */
+  public function testEntityReferenceQueryUsesConnectionCondition() {
+    $connection = $this->getMockBuilder(Connection::class)
+      ->disableOriginalConstructor()
+      ->getMock();
+    // We are testing that the method
+    // \Drupal\Core\Database\Connection::condition() is being called.
+    $connection->expects($this->once())
+      ->method('condition');
+
+    $entity_reference = new EntityReference([], 'some_plugin_id', [], $connection);
+    $entity_reference->options = [
+      'entity_reference_options' => [
+        'match' => 'something',
+        'match_operator' => '=',
+        'limit' => 1,
+      ],
+      'style' => [
+        'options' => [
+          'search_fields' => [],
+        ]
+      ],
+    ];
+
+    $entity_reference->view = $this->getMockBuilder(ViewExecutable::class)
+      ->disableOriginalConstructor()
+      ->getMock();
+
+    $entity_reference->view->query = $this->getMockBuilder(Sql::class)
+      ->disableOriginalConstructor()
+      ->getMock();
+    $entity_reference->view->query->expects($this->once())
+      ->method('getConnection')->willReturn($connection);
+
+    $entity_reference->view->storage = $this->getMockBuilder(View::class)
+      ->disableOriginalConstructor()
+      ->getMock();
+    $entity_reference->view->storage->expects($this->exactly(2))
+      ->method('get')->willReturn('something');
+
+    $entity_reference->query();
+  }
+
+}
diff --git a/core/modules/views/tests/src/Unit/Plugin/filter/BooleanOperatorTest.php b/core/modules/views/tests/src/Unit/Plugin/filter/BooleanOperatorTest.php
new file mode 100644
index 0000000000..057ba72fa0
--- /dev/null
+++ b/core/modules/views/tests/src/Unit/Plugin/filter/BooleanOperatorTest.php
@@ -0,0 +1,60 @@
+<?php
+
+namespace Drupal\Tests\views\Unit\Plugin\filter;
+
+use Drupal\Core\Database\Connection;
+use Drupal\Core\Database\Query\Condition;
+use Drupal\Tests\UnitTestCase;
+use Drupal\views\Plugin\views\filter\BooleanOperator;
+use Drupal\views\Plugin\views\query\Sql;
+
+/**
+ * @coversDefaultClass \Drupal\views\Plugin\views\filter\BooleanOperator
+ * @group views
+ */
+class BooleanOperatorTest extends UnitTestCase {
+
+  /**
+   * @covers ::queryOpBoolean
+   */
+  public function testBooleanOperatorQueryOpContainsUsesConnectionCondition() {
+    $condition = $this->getMockBuilder(Condition::class)
+      ->disableOriginalConstructor()
+      ->getMock();
+    $condition->expects($this->exactly(2))
+      ->method('condition')
+      ->willReturn($condition);
+
+    $connection = $this->getMockBuilder(Connection::class)
+      ->disableOriginalConstructor()
+      ->getMock();
+    $connection->expects($this->exactly(2))
+      ->method('condition')
+      ->withConsecutive(['OR'], ['AND'])
+      ->willReturn($condition);
+
+    $boolean_operator = new BooleanOperator([], 'some_plugin_id', [], $connection);
+    $boolean_operator->options = [
+      'group' => 'something',
+    ];
+    $boolean_operator->accept_null = TRUE;
+
+    $boolean_operator->query = $this->getMockBuilder(Sql::class)
+      ->disableOriginalConstructor()
+      ->getMock();
+    $boolean_operator->query->expects($this->exactly(2))
+      ->method('getConnection')->willReturn($connection);
+
+    $query_op_boolean = new \ReflectionMethod($boolean_operator, 'queryOpBoolean');
+    $query_op_boolean->setAccessible(TRUE);
+
+    // The method \Drupal\Core\Database\Connection::condition() should be called
+    // with the argument 'OR'.
+    $query_op_boolean->invoke($boolean_operator, 'some_field', BooleanOperator::EQUAL);
+
+    // The method \Drupal\Core\Database\Connection::condition() should be called
+    // with the argument 'AND'.
+    $query_op_boolean->invoke($boolean_operator, 'some_field', BooleanOperator::NOT_EQUAL);
+  }
+
+}
diff --git a/core/modules/views/tests/src/Unit/Plugin/filter/StringFilterTest.php b/core/modules/views/tests/src/Unit/Plugin/filter/StringFilterTest.php
new file mode 100644
index 0000000000..6fa1983d12
--- /dev/null
+++ b/core/modules/views/tests/src/Unit/Plugin/filter/StringFilterTest.php
@@ -0,0 +1,48 @@
+<?php
+
+namespace Drupal\Tests\views\Unit\Plugin\filter;
+
+use Drupal\Core\Database\Connection;
+use Drupal\Tests\UnitTestCase;
+use Drupal\views\Plugin\views\filter\StringFilter;
+use Drupal\views\Plugin\views\query\Sql;
+
+/**
+ * @coversDefaultClass \Drupal\views\Plugin\views\filter\StringFilter
+ * @group views
+ */
+class StringFilterTest extends UnitTestCase {
+
+  /**
+   * @covers ::opContainsWord
+   */
+  public function testFilterStringContainsWordUsesConnectionCondition() {
+    $connection = $this->getMockBuilder(Connection::class)
+      ->disableOriginalConstructor()
+      ->getMock();
+    $connection->expects($this->exactly(2))
+      ->method('condition')
+      ->withConsecutive(['AND'], ['OR']);
+
+    $string_filter = new StringFilter([], 'some_plugin_id', [], $connection);
+    $string_filter->query = $this->getMockBuilder(Sql::class)
+      ->disableOriginalConstructor()
+      ->getMock();
+    $string_filter->query->expects($this->exactly(2))
+      ->method('getConnection')->willReturn($connection);
+
+    $op_contains_word = new \ReflectionMethod($string_filter, 'opContainsWord');
+    $op_contains_word->setAccessible(TRUE);
+
+    // The method \Drupal\Core\Database\Connection::condition() should be called
+    // with the argument 'AND'.
+    $op_contains_word->invoke($string_filter, 'some_field');
+
+    $string_filter->operator = 'word';
+
+    // The method \Drupal\Core\Database\Connection::condition() should be called
+    // with the argument 'OR'.
+    $op_contains_word->invoke($string_filter, 'some_field');
+  }
+
+}
diff --git a/core/modules/views/tests/src/Unit/Plugin/query/SqlTest.php b/core/modules/views/tests/src/Unit/Plugin/query/SqlTest.php
index 0ef02fb661..f32eac1b77 100644
--- a/core/modules/views/tests/src/Unit/Plugin/query/SqlTest.php
+++ b/core/modules/views/tests/src/Unit/Plugin/query/SqlTest.php
@@ -2,6 +2,8 @@
 
 namespace Drupal\Tests\views\Unit\Plugin\query;
 
+use Drupal\Core\Database\Connection;
+use Drupal\Core\Database\Query\Condition;
 use Drupal\Core\Entity\EntityInterface;
 use Drupal\Core\Entity\EntityStorageInterface;
 use Drupal\Core\Entity\EntityType;
@@ -606,4 +608,60 @@ public function testLoadEntitiesWithRelationshipAndRevision() {
     $this->assertSame($entities['second'][12], $result[2]->_relationship_entities['entity_second']);
   }
 
+  /**
+   * @covers ::buildCondition
+   */
+  public function testSqlBuildConditionUsesConnectionCondition() {
+    $condition = $this->getMockBuilder(Condition::class)
+      ->disableOriginalConstructor()
+      ->getMock();
+    $condition->expects($this->exactly(4))
+      ->method('condition')
+      ->willReturn($condition);
+
+    $connection = $this->getMockBuilder(Connection::class)
+      ->disableOriginalConstructor()
+      ->getMock();
+    $connection->expects($this->exactly(6))
+      ->method('condition')
+      ->withConsecutive(['AND'], ['AND'], ['AND'], ['AND'], ['OR'], ['OR'])
+      ->willReturn($condition);
+
+    $sql = $this->getMockBuilder(Sql::class)
+      ->disableOriginalConstructor()
+      ->getMock();
+    $sql->expects($this->any())
+      ->method('getConnection')->willReturn($connection);
+
+    $sql->where = [
+      'some_group' => [
+        'conditions' => [
+          [
+            'operator' => 'some_operator',
+            'field' => 'some_field',
+            'value' => 'some_value',
+          ],
+        ],
+        'type' => 'AND',
+      ]
+    ];
+
+    $build_condition = new \ReflectionMethod($sql, 'buildCondition');
+    $build_condition->setAccessible(TRUE);
+
+    // The method \Drupal\Core\Database\Connection::condition() should be called
+    // 3 times with the argument 'AND'.
+    $build_condition->invoke($sql);
+
+    $group_operator = new \ReflectionProperty($sql, 'groupOperator');
+    $group_operator->setAccessible(TRUE);
+    $group_operator->setValue($sql, 'OR');
+
+    $sql->where['some_group']['type'] = 'OR';
+
+    // The method \Drupal\Core\Database\Connection::condition() should be called
+    // 1 time with the argument 'AND' and then 2 times with the argument 'OR'.
+    $build_condition->invoke($sql);
+  }
+
 }
