Почему срабатывает неправильная выборка ресурсов?

[[!pdoPage?
	&parents=`3`
	&showHidden=`0`
	&tpl=`list_publications`
	&limit=`12`
	&includeContent=`1`
	&includeTVs=`img_project`
	&pageLinkScheme=`/[[+pageVarKey]]/[[+page]]/`
	&where=`["FROM_UNIXTIME(publishedon, '%Y-%m-%d') = '[[!yesterday]]' OR FROM_UNIXTIME(publishedon, '%Y-%m-%d') = '[[!today]]'"]`
]]
хочу выводить записи за вчера и сегодня из категории 3, но выводятся записи из всех категорий… почему так? Т.е. parents не учитывается в данном условии?
UDAV
02 апреля 2016, 19:56
modx.pro
1 025
0

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

Сергей Шлоков
03 апреля 2016, 11:04
+1
&where=`["(FROM_UNIXTIME(publishedon, '%Y-%m-%d') = '[[!yesterday]]' OR FROM_UNIXTIME(publishedon, '%Y-%m-%d') = '[[!today]]')"]
Кроме того, этот код желательно оптимизировать. Вместо вызова 2-х сниппетов вызывать один с выставлением плейсхолдеров today и yesterday. Вызывать его перед pdoPage. Тогда условие будет выглядеть так
&where=`["(FROM_UNIXTIME(publishedon, '%Y-%m-%d') = '[[+yesterday]]' OR FROM_UNIXTIME(publishedon, '%Y-%m-%d') = '[[+today]]')"]
Есть еще вариант с использованием фенома. Тогда можно из без сниппета обойтись.

Совет. У pdoTools сниппетов есть замечательный параметр showLog. Советую его использовать при отладке.
    UDAV
    03 апреля 2016, 12:42
    0
    showLog пользовался, там все ок, но почему то все равно выбирает не те записи.
    AND `modResource`.`parent` IN (3,27,28,29,30,31,34,33)
    а выводятся и 36 и 41 id…

    полностью мускл запрос
    0.0005422: SQL prepared "SELECT SQL_CALC_FOUND_ROWS `modResource`.`id`, `modResource`.`type`, `modResource`.`contentType`, `modResource`.`pagetitle`, `modResource`.`longtitle`, `modResource`.`description`, `modResource`.`alias`, `modResource`.`link_attributes`, `modResource`.`published`, `modResource`.`pub_date`, `modResource`.`unpub_date`, `modResource`.`parent`, `modResource`.`isfolder`, `modResource`.`introtext`, `modResource`.`content`, `modResource`.`richtext`, `modResource`.`template`, `modResource`.`menuindex`, `modResource`.`searchable`, `modResource`.`cacheable`, `modResource`.`createdby`, `modResource`.`createdon`, `modResource`.`editedby`, `modResource`.`editedon`, `modResource`.`deleted`, `modResource`.`deletedon`, `modResource`.`deletedby`, `modResource`.`publishedon`, `modResource`.`publishedby`, `modResource`.`menutitle`, `modResource`.`donthit`, `modResource`.`privateweb`, `modResource`.`privatemgr`, `modResource`.`content_dispo`, `modResource`.`hidemenu`, `modResource`.`class_key`, `modResource`.`context_key`, `modResource`.`content_type`, `modResource`.`uri`, `modResource`.`uri_override`, `modResource`.`hide_children_in_tree`, `modResource`.`show_in_tree`, `modResource`.`properties`, IFNULL(`TVimg_project`.`value`, '') AS `tv.img_project` FROM `cmm_site_content` AS `modResource` LEFT JOIN `cmm_site_tmplvar_contentvalues` `TVimg_project` ON `TVimg_project`.`contentid` = `modResource`.`id` AND `TVimg_project`.`tmplvarid` = 2 WHERE  ( FROM_UNIXTIME(publishedon, '%Y-%m-%d') = '2016-04-02' OR FROM_UNIXTIME(publishedon, '%Y-%m-%d') = '2016-04-03' AND `modResource`.`parent` IN (3,27,28,29,30,31,34,33) AND `modResource`.`published` = 1 AND `modResource`.`hidemenu` = 0 AND `modResource`.`deleted` = 0 )  ORDER BY modResource.publishedon DESC LIMIT 12 "

    а как через феном сделать? если честно, то в нем вообще не понял ничего.
      Сергей Шлоков
      03 апреля 2016, 15:17
      +1
      а выводятся и 36 и 41 id…
      А выводятся они скорее всего потому, что для них срабатывает условие
      FROM_UNIXTIME(publishedon, '%Y-%m-%d') = '2016-04-02'
      т.е. дата публикации у них '2016-04-02'. Поэтому я в первом комментарии и сделал группировку условия, чтобы OR было в скобках.
      Вот же как получается без группировки
      WHERE  ( FROM_UNIXTIME(publishedon, '%Y-%m-%d') = '2016-04-02' OR FROM_UNIXTIME(publishedon, '%Y-%m-%d') = '2016-04-03' AND `modResource`.`parent` IN (3,27,28,29,30,31,34,33) AND `modResource`.`published` = 1 AND `modResource`.`hidemenu` = 0 AND `modResource`.`deleted` = 0 )
      А чтобы ограничить parent, нужно указать depth=1 (или 0, точно не помню).
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    3