function views_handler_filter_fields_compare::query
Add this filter to the query.
Due to the nature of fapi, the value and the operator have an unintended level of indirection. You will find them in $this->operator and $this->value respectively.
Overrides views_handler_filter::query
File
-
handlers/
views_handler_filter_fields_compare.inc, line 100
Class
- views_handler_filter_fields_compare
- A handler to filter a view using fields comparison.
Code
public function query() {
// Build extra condition from existing fields (from existing joins).
$left = $this->options['left_field'];
$right = $this->options['right_field'];
// Get all existing field handlers.
$field_handlers = $this->view->display_handler
->get_handlers('field');
// Make sure the selected fields still exist.
if (!isset($field_handlers[$left], $field_handlers[$right])) {
return;
}
// Get the left table and field.
$left_handler = $field_handlers[$left];
$left_handler->set_relationship();
$left_table_alias = $this->query
->ensure_table($left_handler->table, $left_handler->relationship);
// Get the left table and field.
$right_handler = $field_handlers[$right];
$right_handler->set_relationship();
$right_table_alias = $this->query
->ensure_table($right_handler->table, $right_handler->relationship);
// Build piece of SQL.
$snippet = $left_table_alias . '.' . $left_handler->real_field . ' ' . $this->options['operator'] . ' ' . $right_table_alias . '.' . $right_handler->real_field;
$this->query
->add_where_expression($this->options['group'], $snippet);
}