EntityFieldQuery plusieurs des conditions alternatives
Y est plus optimale et la plus courte de manière à obtenir des nœuds avec certaines conditions?
$query = new EntityFieldQuery;
$result = $query
->entityCondition('entity_type', 'node')
->propertyCondition('type', $node_type)
->propertyCondition('title', $title)
->fieldCondition('field_number', 'value', '1', '=');
->propertyCondition('status', 1, '=')
->execute();
//$result['node'] contains a list of nids where the title matches
if (!empty($result['node']) {
//You could use node_load_multiple() instead of entity_load() for nodes
$nodes = entity_load('node', array_keys($result['node']));
}
$query_two = new EntityFieldQuery;
$result_two = $query_two
->entityCondition('entity_type', 'node')
->propertyCondition('type', $node_type)
->propertyCondition('title', $title)
->fieldCondition('field_number', 'value', '2', '=');
->propertyCondition('status', 1, '=')
->execute();
//$result_two['node'] contains a list of nids where the title matches
if (!empty($result_two['node']) {
//You could use node_load_multiple() instead of entity_load() for nodes
$nodes_two = entity_load('node', array_keys($result_two['node']));
}
OriginalL'auteur Anglo | 2011-05-16
Vous devez vous connecter pour publier un commentaire.
Bien, vous avez certainement pu utiliser
->fieldCondition('field_number', 'valeur', array(1, 2))
, mais à part ça, pas que je sache (et je l'ai écritEntityFieldQuery
). Même si vous étiez à réécrire ce SQL de stockage de seulement faire une requête, il ne serait pas beaucoup plus simple.Vous n'avez pas besoin de spécifier
=
que l'opérateur, et vous n'avez pas besoin de spécifierIN
soit, ils sont par défaut pour un scalaire ou un tableau de valeur.OriginalL'auteur chx
J'ai récemment écrit un wrapper pour EntityFieldQuery, puisque je viens de l'utiliser trop. Ensuite, la façon dont je l'appel il devient, le résultat peut être un id ou un tableau d'id. Espérons que cela a du sens.
OriginalL'auteur windmaomao