Як використовувати 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.

Відповіді:


11

З модулем 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();

Це спрацювало для мене, коли я змінив 'value2' на 'value'.
Крейг

1
Зауважте, що "значення" - це дата початку, а "значення2" - кінцева дата, якщо вона налаштована.
Маріо Авад

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');
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.