// failures with database drivers that override the
// Drupal\Core\Database\Query\Select class. We build a dynamic query via
// the db API to check that its SQL matches the one generated by the
// EntityQuery. This way we ensure that the database driver is free to
// create its own comparable SQL statement.
$connection = Database::
getConnection();
$expected =
$connection->
select("entity_test_mulrev", "base_table"
);
$expected->
addField("base_table", "revision_id", "revision_id"
);
$expected->
addField("base_table", "id", "id"
);
$expected->
join("entity_test_mulrev__
$figures", "entity_test_mulrev__
$figures", '[entity_test_mulrev__' .
$figures . '].[entity_id] = [base_table].[id]'
);
$expected->
join("entity_test_mulrev__
$figures", "entity_test_mulrev__{
$figures}_2", '[entity_test_mulrev__' .
$figures . '_2].[entity_id] = [base_table].[id]'
);
$expected->
addJoin("LEFT", "entity_test_mulrev__
$figures", "entity_test_mulrev__{
$figures}_3", '[entity_test_mulrev__' .
$figures . '_3].[entity_id] = [base_table].[id]'
);
$expected->
condition("entity_test_mulrev__
$figures.{
$figures}_color",
["blue"
], "IN"
);
$expected->
condition("entity_test_mulrev__{
$figures}_2.{
$figures}_color",
["red"
], "IN"
);
$expected->
isNull("entity_test_mulrev__{
$figures}_3.{
$figures}_color"
);
$expected->
orderBy("base_table.id"
);
// Apply table prefixes and quote identifiers for the expected SQL.
$expected_string =
$connection->
prefixTables((string) $expected);
$expected_string =
$connection->
quoteIdentifiers($expected_string);
// Resolve placeholders in the expected SQL to their values.
$quoted =
[];
foreach ($expected->
getArguments() as $key =>
$value) {