Выбора ресурcа в зависимости от параметра TV

У документа есть дата. Которая задается TV. Мне необходимо получить документ и определить какая у него дата. В зависимости от этого я его вывожу или нет.

В настоящий момент я реализовал так.
$documents = $modx->getCollection('modResource',array('parent' => 14));

foreach ($documents as $document) {
   $open_date = $document->getTVValue(2);
   if (strtotime($open_date) >= $now){ 
       //код...
   }
}

То есть сначала запрос и выбор документов, затем получение их TV и проверка условия.

Вопрос!
А возможно ли в 1 запрос выбрать документы с удовлетворяющими меня TV?
Prizrak Pro
05 марта 2013, 11:37
modx.pro
1 230
0

Комментарии: 3

Илья Уткин
05 марта 2013, 17:20
0
Можно попробовать делать выборку сначала TV, а потом получать ресурсы. Так уже будет быстрее и меньше ресурсов расходоваться.
$date = date('Y-m-d h:m:s');
$tvObjs = $modx->getCollection('modTemplateVarResource',array('tmplvarid' => 2, 'value:>=' => $date));
$resources = array();
foreach ($tvObjs as $tv) {
  $resources[] = $tv->get('contentid');
}
В итоге в массиве $resources у нас будут id-шники нужных ресурсов.

А если нужно прям за один запрос, используйте pdoTools.
    Алексей Карташов
    05 марта 2013, 18:03
    0
    Вообще, такой запрос составить легко (даже очень просто). Нужны минимальные знания sql. Но чтобы вам помочь, надо знать — какой тип данных вы используете для хранения даты в таблице?
      Prizrak Pro
      05 марта 2013, 22:56
      0
      С sql у меня нет проблем. У меня то вопрос в xPDO возник.

      А вопрос по поводу в чем храню, это не ко мне, а к разработчикам modx. Мои данные хранятся в TV. А значит хранитьс в формате unix.

      По поводу pdoTools спасибо, по изучаю.

      Я понимаю на sql по любому быстрее, но скорость мне не сильно нужна. Хочу понять можно ли на xPDO ещё оптимальнее.
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      3