EntityFieldQuery::propertyCondition

7 entity.inc public EntityFieldQuery::propertyCondition($column, $value, $operator = NULL)
8 entity.query.inc public EntityFieldQuery::propertyCondition($column, $value, $operator = NULL)

Adds a condition on an entity-specific property.

An $entity_type must be specified by calling EntityFieldCondition::entityCondition('entity_type', $entity_type) before executing the query. Also, by default only entities stored in SQL are supported; however, EntityFieldQuery::executeCallback can be set to handle different entity storage.

Parameters

$column: A column defined in the hook_schema() of the base table of the entity.

$value: The value to test the field against. In most cases, this is a scalar. For more complex options, it is an array. The meaning of each element in the array is dependent on $operator.

$operator: Possible values:

  • '=', '<>', '>', '>=', '<', '<=', 'STARTS_WITH', 'CONTAINS': These operators expect $value to be a literal of the same type as the column.
  • 'IN', 'NOT IN': These operators expect $value to be an array of literals of the same type as the column.
  • 'BETWEEN': This operator expects $value to be an array of two literals of the same type as the column.

The operator can be omitted, and will default to 'IN' if the value is an array, or to '=' otherwise.

Return value

EntityFieldQuery The called object.

File

includes/entity.inc, line 817

Code

public function propertyCondition($column, $value, $operator = NULL) {
  // The '!=' operator is deprecated in favour of the '<>' operator since the
  // latter is ANSI SQL compatible.
  if ($operator == '!=') {
    $operator = '<>';
  }
  $this->propertyConditions[] = array(
    'column' => $column, 
    'value' => $value, 
    'operator' => $operator,
  );
  return $this;
}

Comments

SQL LIKE wildcard usage '%'

<?php
// Initialize EntityFieldQuery
 
$entity_type = 'node';
 
$efq = new EntityFieldQuery();
 
$efq->entityCondition('entity_type', $entity_type);

 
// Query condition Using LIKE wildcard
 
$efq->propertyCondition('title', "%".$form_state['values']['title']."%","LIKE"); 

 
// Execute query and collect results
 
$result = $efq->execute(); 
?>

Safe

This is perfectly safe as the $value parameter gets replaced with a placeholder when the query is built.

Login or register to post comments