Random sorteren van een EntityFieldQuery

De EntityFieldQuery van Drupal is een makkelijke manier om data uit tabellen te trekken zonder alle gelinkte tabellen in je query op te nemen. Het is tegenwoordig mijn favoriete alternatief voor het gebruik van Views. Maar een van de nadelen op dit moment is dat er geen manier is om een willekeurige sortering toe te passen. Er is al een issue op drupal.org maar wat nu als je het per direct wilt? 

Dan kan dat zo:

/**
 * Implementation of hook_query_TAG_alter
 */
function mymodule_query_random_alter($query) {
  $query->orderRandom();
}

Dit voegt een willekeurige sortering toe aan alle EntityFieldQueries die een tag 'random' hebben. Een tag voeg je op de volgende manier toe:

$query = new EntityFieldQuery();
$query->entityCondition(‘entity_type’, ‘node’)
->propertyCondition(‘status’, 1)
->addTag(‘random’)
->range(0,1);
$results = $query->execute();

Met bovenstaande query krijg je 1 willekeurige node uit het systeem. 

back_blog