Come usare EntityFieldQuery con le date? [chiuso]


9

Devo selezionare entità con date specifiche.

Come devono essere formattati i seguenti elementi. Devo analizzare il 15 maggio 2010

Anche come ottengo la pagina di errore.

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
Non è possibile rispondere così com'è perché non conosciamo il tipo di campo per field_event_date.

Risposte:


10

Con Drupal 7 e il modulo Data 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();

Questo ha funzionato per me quando ho cambiato 'value2' in 'value'.
Craig,

1
Si noti che 'valore' è per la data di inizio e 'valore2' è per la data di fine, se configurato.
Mario Awad,

2

Non l'ho usato EntityFieldQuery, ma guardando il codice suggerisce che dovrai assicurarti che field_event_datesia archiviato come un campo MySQL DateTime e che il formato dell'argomento sia in uno dei formati preferiti:

Come stringa nel formato "AAAA-MM-GG" o "AA-MM-GG". Anche in questo caso è consentita una sintassi "rilassata". Ad esempio, '98 -12-31 ', '98 .12.31', '98 / 12/31 'e '98 @ 12 @ 31' sono equivalenti.


0

Ecco il codice per controllare l'intervallo di date utilizzando la parola chiave 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');
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.