Выборка &where: не срабатывает &parents
Здравствуйте. Прошу направить на путь истинный, уже всю голову сломал.
Есть вызов который должен выбрать из контейнера (id 36) ресурсы с тегом «тег 1», «тег 2»
У контейнера (36) всего три дочерних ресурса (id: 37,38,39)
Почему происходит выборка из других контейнеров, как будто &parents=`0`, а не &parents=`36`
Вот лог
Есть вызов который должен выбрать из контейнера (id 36) ресурсы с тегом «тег 1», «тег 2»
[[!pdoResources?
&parents=`36`
&showLog=`1`
&depth=`1`
&tpl=`@INLINE <a target="_blank" title="[[+longtitle]]" href="[[++site_url]][[+uri]]">[[+tv.tags]]</a>`
&scheme=`full`
&cache=`1`
&cacheTime=`86400`
&includeTVs=`tags`
&limit=`6`
&hideContainers=`1`
&where=`{"tags:LIKE":"тег 1","OR:tags:LIKE":"тег 2"}`
]]
У контейнера (36) всего три дочерних ресурса (id: 37,38,39)
Почему происходит выборка из других контейнеров, как будто &parents=`0`, а не &parents=`36`
Вот лог
<pre class="pdoResourcesLog">0.0001121: pdoTools loaded
0.0000219: xPDO query object created
0.0003200: Included list of tvs: <b>tags</b>
0.0001550: leftJoined <i>modTemplateVarResource</i> as <b>TVtags</b>
0.0002320: Added selection of <b>modResource</b>: <small>SQL_CALC_FOUND_ROWS `id`, `type`, `contentType`, `pagetitle`, `longtitle`, `description`, `alias`, `link_attributes`, `published`, `pub_date`, `unpub_date`, `parent`, `isfolder`, `introtext`, `richtext`, `template`, `menuindex`, `searchable`, `cacheable`, `createdby`, `createdon`, `editedby`, `editedon`, `deleted`, `deletedon`, `deletedby`, `publishedon`, `publishedby`, `menutitle`, `donthit`, `privateweb`, `privatemgr`, `content_dispo`, `hidemenu`, `class_key`, `context_key`, `content_type`, `uri`, `uri_override`, `hide_children_in_tree`, `show_in_tree`, `properties`</small>
0.0000060: Added selection of <b>modTemplateVarResource</b>: <small>IFNULL(`value`, '') AS `tv.tags`</small>
0.0000391: Replaced TV conditions
0.0004139: Processed additional conditions
0.0006540: Added where condition: <b>`TVtags`.`value`:LIKE=тег 1, OR:`TVtags`.`value`:LIKE=тег 2, modResource.parent:IN(36,37,38,39), modResource.published=1, modResource.deleted=0, modResource.isfolder=0</b>
0.0000181: Replaced TV conditions
0.0000741: Sorted by <b>modResource.publishedon</b>, <b>DESC</b>
0.0000019: Limited to <b>6</b>, offset <b>0</b>
0.0008800: SQL prepared <small>"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`.`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(`TVtags`.`value`, '') AS `tv.tags` FROM `modx_site_content` AS `modResource` LEFT JOIN `modx_site_tmplvar_contentvalues` `TVtags` ON `TVtags`.`contentid` = `modResource`.`id` AND `TVtags`.`tmplvarid` = 7 WHERE ( `TVtags`.`value` LIKE 'тег 1' OR `TVtags`.`value` LIKE 'тег 2' AND `modResource`.`parent` IN (36,37,38,39) AND `modResource`.`published` = 1 AND `modResource`.`deleted` = 0 AND `modResource`.`isfolder` = 0 ) ORDER BY modResource.publishedon DESC LIMIT 6 "</small>
0.0002890: SQL executed
0.0003798: Total rows: <b>3</b>
0.0000210: Rows fetched
0.0011101: Prepared and processed TVs
0.0002019: Created inline chunk with name "97dd77a3e1ef6df416c421c495220dc5"
0.0006890: Returning processed chunks
0.0050640: <b>Total time</b>
14 942 208: <b>Memory usage</b>
</pre>
Комментарии: 4
$depth=`0`
Это раз. И два — нужно делать группировку для OR. Смотри какое where ограничение получается.
Спасибо, depth поменял, заработало так
&where=`[{"tags:LIKE":"тег 1","OR:tags:LIKE":"тег 2"}]`
лог (до скобок [])Added where condition: `TVtags`.`value`:LIKE=тег 1, OR:`TVtags`.`value`:LIKE=тег 2, modResource.parent:IN(36), modResource.published=1, modResource.deleted=0, modResource.isfolder=0
лог ( после скобок [])Added where condition: `TVtags`.`value`:LIKE=тег 1, OR:`TVtags`.`value`:LIKE=тег 2, modResource.parent:IN(36), modResource.published=1, modResource.deleted=0, modResource.isfolder=0
Единственное добавилась еще одна строка (их стало 2) Replaced TV conditions
В осальном в логах я не нашел различий, а вывод изменился, магия да и только
Ты сравнивай строку SQL prepared
Магия исчезла.
было
было
WHERE ( `TVtags`.`value` LIKE 'тег 1' OR `TVtags`.`value` LIKE 'тег 2' AND `modResource`.`parent` IN (36)
стало WHERE ( ( `TVtags`.`value` LIKE 'тег 1' OR `TVtags`.`value` LIKE 'тег 2' ) AND `modResource`.`parent` IN (36)
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.