XPDO where по дате

Привет, помогите пожалуйста разобраться с датой через XPDO. Я уверен, что неправильно с ней работаю, направьте на путь истинный.

Берётся текущий день, затем через цикл выводятся 5 материалов за этот день, в конце цикла прибавляется к текущей дате +1 день, затем цикл опять выводит материалы за данный день и т.д.

Вопрос следующий, как можно исключить из выборки дни, в которых не было материалов(т.е. если у текущего дня нет материалов, вместо него берётся след. день, где есть материалы).


$data = date('Y-m-d'); // тек. день

for($i = 0; $i < 4; $i++){
    // Получение диапазона дня
    $date_from = strtotime($data." 00:00:00");
    $date_to = strtotime($data." 23:59:59");
    
    $where = $modx->newQuery('modResource');
    $where->limit(5); 
    $where->where(array(
    	'publishedon:>' => $date_from,
    	'publishedon:<' => $date_to,
    ));
    $resources = $modx->getCollection('modResource',$where);
    //var_dump(count($resources));
    
    $res .= '<div class="col-md-3">';
    $res .= '<p class="lead"><b>Дата:</b> '.$data.'</p>';
    
    foreach ($resources as $k) {
        $res .= '<p>'.$k->get('pagetitle').'</p>';
        $res .= '<p><small>Дата: '.$k->get('publishedon').'</small></p>';
    }
    
    $res .= '</div>';
    
    $data = date('Y-m-d',(strtotime('+ 1 days', strtotime($data)))); // Счётчик на след. день
    
}
PS: Заодно подскажите, как можно проще получить след. и пред. день. Я делаю так:
$data_prev = date('Y-m-d',(strtotime('-1 days', strtotime($data))));//след. день
$data_next = date('Y-m-d',(strtotime('+1 days', strtotime($data)))); //пред. день
И для выборки материалов за конкретный день так:
$data = date('Y-m-d'); // тек. день
$date_from = strtotime($data." 00:00:00");
$date_to = strtotime($data." 23:59:59");
$where->where(array(
    	'publishedon:>' => $date_from,
    	'publishedon:<' => $date_to,
    ));
Павел
17 ноября 2015, 10:14
modx.pro
1
1 928
0

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

maslitto
17 ноября 2015, 13:22
0
поставь проверку на пустой массив перед циклом foreach
if ($resources ) {
foreach ($resources as $k) {
        $res .= '<p>'.$k->get('pagetitle').'</p>';
        $res .= '<p><small>Дата: '.$k->get('publishedon').'</small></p>';
    }
}
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    1