Comment utiliser EntityFieldQuery avec des dates? [fermé]


9

Je dois sélectionner des entités avec des dates spécifiques.

Comment les éléments suivants doivent-ils être formatés? Dois-je analyser 15 mai 2010

Aussi comment j'obtiens la page d'erreur.

function events2() {

$query = new EntityFieldQuery();
$query
  ->entityCondition('entity_type', 'node', '=')
  ->propertyCondition('status', 1, '=')
  ->propertyCondition('type', 'event')  
  ->propertyCondition('field_event_date', '15-May-2010', '=');

$result = $query->execute();

 return $result;

}

1
Cela ne peut pas être répondu en l'état car nous ne connaissons pas le type de champ pour field_event_date.

Réponses:


10

Avec Drupal 7 et le module Date 2.2:

$query = new EntityFieldQuery;
$result = $query->entityCondition('entity_type', 'node')
->entityCondition('bundle', 'event')
->propertyCondition('status', 1) // Getting published nodes only.
->fieldCondition('field_dates', 'value2', date("Y-m-d"), '<') // end date before today
->execute();

Cela a fonctionné pour moi lorsque j'ai changé la «valeur2» en «valeur».
Craig

1
Notez que «valeur» correspond à la date de début et «valeur2» à la date de fin, si elle est configurée.
Mario Awad

2

Je ne l'ai pas utilisé EntityFieldQuery, mais en regardant le code, vous devrez vous assurer qu'il field_event_dateest stocké en tant que champ MySQL DateTime et que le format de l'argument est dans l'un des formats préférés:

En tant que chaîne au format «AAAA-MM-JJ» ou «AA-MM-JJ». Une syntaxe «détendue» est également autorisée ici. Par exemple, '98 -12-31 ', '98 .12.31', '98 / 12/31 'et '98 @ 12 @ 31' sont équivalents.


0

Voici le code pour vérifier la plage de dates à l'aide du mot-clé BETWEEN,

$month = $form_state['values']['month'];
$year = $form_state['values']['year'];
$num_padded = sprintf("%02d", $month);
$first_day = date($year.'-'.$num_padded.'-01 00:00:00'); 
$last_day =  date("Y-m-t 23:59:59", strtotime($first_day));
$query = new EntityFieldQuery();
$query->entityCondition('entity_type', 'node')
            ->entityCondition('bundle', 'YOUR_CONTENT_TYPE')
            ->fieldCondition('DATE_FIELD', 'value', array($first_day,$last_day), 'BETWEEN');
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.