[РЕШЕНО] Помогите пожалуйста переписать pdoPage WHERE на Fenom
Вопрос решен, как всегда спасибо Василию, ответ здесь: modx.pro/help/9814#comment-67066
Если кратко, то where пишем просто «в чистом виде» вместо массива:
Вопрос был такой:
Уважаемые коллеги. Сломал всю голову, сказывается плохое знание окавычивания всего и вся в MODX :))) Как переписать этот кусок кода на Fenom?
Собственно, закавыка только в строке
Я там совсем запутался в кавычках.
Пробовал так:
Но лог запроса выдает какую-то ересь, вместо работающего запроса в первом случае:
Рабочее условие, выводит нужные ресурсы:
Мой код на Fenom, не выводит ничего, потому что генерится кривой where:
Тут как бы НУПОЧТИ :) Не понимаю, как отключить \' в моем коде, и как закавычить 3211, тогда наверное что-то и будет. Ну и 1=1 куда-то делся, а он нужен, согласно заметки pdoFetch поиск в TV-полях с разделителем ||
Если кратко, то where пишем просто «в чистом виде» вместо массива:
{$_modx->runSnippet('!pdoResources', [
'parents' => 0,
'includeTVs' => 'test',
'where' => ["1 = 1 AND FIND_IN_SET("~$_modx->resource.id~", replace(test, '||', ','))"],
'showLog' => 1
])}
Вопрос был такой:
Уважаемые коллеги. Сломал всю голову, сказывается плохое знание окавычивания всего и вся в MODX :))) Как переписать этот кусок кода на Fenom?
[[!pdoPage?
&limit=`107`
&parents=`3178`
&includeTVs=`linkto_platform`
&where=`["1=1 AND FIND_IN_SET('[[*id]]', replace(linkto_platform, '||', ','))"]`
&tpl=`@INLINE [[+pagetitle]]
`
&showLog=1
]]
Собственно, закавыка только в строке
&where=`["1=1 AND FIND_IN_SET('[[*id]]', replace(linkto_platform, '||', ','))"]`
Я там совсем запутался в кавычках.
Пробовал так:
{$_modx->runSnippet('!pdoResources', [
'parents' => 3178,
'includeTVs' => 'linkto_platform',
'where' => [
"1" => 1,
"linkto_platform:FIND_IN_SET" => "({$_modx->resource.id}, replace(linkto_platform, '||', ','))",
],
'tplWrapper' => '@INLINE <ul>[[+output]]</ul>',
'tpl' => '@FILE chunks/news/news_row_simple.tpl',
'toPlaceholder' => 'games_list',
'showLog' => 1,
])}
Но лог запроса выдает какую-то ересь, вместо работающего запроса в первом случае:
Рабочее условие, выводит нужные ресурсы:
WHERE ( 1=1 AND FIND_IN_SET('3211', replace(`TVlinkto_platform`.`value`, '||', ','))
Мой код на Fenom, не выводит ничего, потому что генерится кривой where:
WHERE ( `TVlinkto_platform`.`value` FIND_IN_SET '(3211, replace(linkto_platform, \'||\', \',\'))'
Тут как бы НУПОЧТИ :) Не понимаю, как отключить \' в моем коде, и как закавычить 3211, тогда наверное что-то и будет. Ну и 1=1 куда-то делся, а он нужен, согласно заметки pdoFetch поиск в TV-полях с разделителем ||