如何在日期中使用EntityFieldQuery?[关闭]


9

我需要选择具有特定日期的实体。

以下内容应如何格式化。我是否需要解析2010年5月15日

还有我如何得到错误页面。

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
由于我们不知道field_event_date的字段类型,因此无法按现状回答。

Answers:


10

使用Drupal 7和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();

当我将“ value2”更改为“ value”时,这对我有用。
Craig

1
请注意,“ value”用于开始日期,“ value2”用于结束日期(如果已配置)。
Mario Awad 2014年

2

我还没有使用过EntityFieldQuery,但是查看代码表明您需要确保将field_event_date其存储为MySQL DateTime字段,并且参数的格式采用以下首选格式之一:

作为“ YYYY-MM-DD”或“ YY-MM-DD”格式的字符串。这里也允许使用“宽松”语法。例如,“ 98-12-31”,“ 98.12.31”,“ 98/12/31”和“ 98 @ 12 @ 31”是等效的。


0

这是使用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');
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.