Wie verwende ich EntityFieldQuery mit Datumsangaben? [geschlossen]


9

Ich muss Entitäten mit bestimmten Daten auswählen.

Wie soll folgendes formatiert werden? Muss ich den 15. Mai 2010 analysieren?

Auch wie ich die Fehlerseite bekomme.

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
Dies kann derzeit nicht beantwortet werden, da wir den Feldtyp für field_event_date nicht kennen.

Antworten:


10

Mit Drupal 7 und Datumsmodul 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();

Dies funktionierte für mich, als ich 'value2' in 'value' änderte.
Craig

1
Beachten Sie, dass 'Wert' für das Startdatum und 'Wert2' für das Enddatum steht, falls konfiguriert.
Mario Awad

2

Ich habe es nicht verwendet EntityFieldQuery, aber wenn Sie sich den Code ansehen , müssen Sie sicherstellen, dass er field_event_dateals MySQL DateTime- Feld gespeichert ist und dass das Format des Arguments in einem der bevorzugten Formate vorliegt :

Als Zeichenfolge im Format 'JJJJ-MM-TT' oder 'JJJ-MM-TT'. Auch hier ist eine „entspannte“ Syntax zulässig. Zum Beispiel sind '98 -12-31 ', '98 .12.31', '98 / 12/31 'und '98 @ 12 @ 31' äquivalent.


0

Hier ist der Code zum Überprüfen des Datumsbereichs mit dem Schlüsselwort 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');
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.