¿Cómo usar EntityFieldQuery con fechas? [cerrado]


9

Necesito seleccionar entidades con fechas específicas.

¿Cómo debe formatearse lo siguiente? ¿Necesito analizar el 15 de mayo de 2010?

También cómo obtengo la página de error.

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
Esto no se puede responder tal como está porque no conocemos el tipo de campo para field_event_date.

Respuestas:


10

Con Drupal 7 y el módulo de fecha 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();

Esto funcionó para mí cuando cambié el 'valor2' a 'valor'.
Craig

1
Tenga en cuenta que 'valor' es para la fecha de inicio y 'valor2' es para la fecha de finalización, si está configurado.
Mario Awad

2

No lo he usado EntityFieldQuery, pero mirar el código sugiere que deberá asegurarse de que field_event_dateesté almacenado como un campo MySQL DateTime , y que el formato del argumento esté en uno de los formatos preferidos:

Como una cadena en formato 'AAAA-MM-DD' o 'AAA-MM-DD'. Aquí también se permite una sintaxis "relajada". Por ejemplo, '98 -12-31 ', '98 .12.31', '98 / 12/31 'y '98 @ 12 @ 31' son equivalentes.


0

Aquí está el código para verificar el rango de fechas usando la palabra clave 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');
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.