Как использовать EntityFieldQuery с датами? [закрыто]


9

Мне нужно выбрать объекты с конкретными датами.

Как следует отформатировать следующее. Нужно ли разбирать 15 мая 2010

Также, как я получаю страницу ошибки.

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.

Ответы:


10

С Drupal 7 и модулем даты 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();

Это сработало для меня, когда я изменил «значение2» на «значение».
Крейг

1
Обратите внимание, что «значение» для даты начала и «значение 2» для даты окончания, если настроено.
Марио Авад

2

Я не использовал EntityFieldQuery, но просмотр кода показывает, что вам нужно убедиться, что field_event_dateон хранится как поле MySQL DateTime , и что формат аргумента находится в одном из предпочтительных форматов:

В виде строки в формате «ГГГГ-ММ-ДД» или «ГГ-ММ-ДД». Здесь также разрешен «расслабленный» синтаксис. Например, '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');
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.