Jak korzystać z EntityFieldQuery z datami? [Zamknięte]

9

Muszę wybrać podmioty o określonych datach.

Jak należy sformatować następujące elementy. Czy muszę parsować 15 maja 2010 r

Również, w jaki sposób otrzymuję stronę błędu.

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;

}
mroźny
źródło
1
Na to pytanie nie można odpowiedzieć w obecnej formie, ponieważ nie znamy typu pola dla zmiennej data_wejścia.

Odpowiedzi:

10

Z Drupal 7 i modułem daty 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();
Cedric Thiebault
źródło
To działało dla mnie, kiedy zmieniłem „wartość2” na „wartość”.
Craig
1
Pamiętaj, że „wartość” dotyczy daty początkowej, a „wartość 2” oznacza datę końcową, jeśli skonfigurowano.
Mario Awad
2

Nie korzystałem EntityFieldQuery, ale patrząc na kod sugeruje, że musisz upewnić się, że field_event_datejest przechowywany jako pole MySQL DateTime i że format argumentu jest w jednym z preferowanych formatów:

Jako ciąg znaków w formacie „RRRR-MM-DD” lub „RRRR-MM-DD”. Dozwolona jest również tutaj „zrelaksowana” składnia. Na przykład „98–12–31”, „98 .12.31”, „98/12/31” i „98 @ 12 @ 31” są równoważne.

cam8001
źródło
0

Oto kod do sprawdzania zakresu dat za pomocą słowa kluczowego 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');
Vishal Sheladiya
źródło