прошу помочь с where fenom
Добрый день! Имеется следующий вызов pdoResources:
Сделал TV поле searching. Попробовал добавить его в выборку вот так:
Прошу помочь подсказать, что именно не так в where?
{pdoResources' | snippet : [
'limit' => 0,
'parents' => $poselki,
'depth' => 0,
'return' => 'ids',
'select' => '{
"modResource":"*",
"Status":"`value` AS `sell_status`"
}',
'leftJoin' => '{
"Status":{"class":"msProductOption","on":"Status.product_id = modResource.id AND Status.key = \'sell_status\'"}
}',
'where' => '{"Status.value:IN":['',0,2]}',
'showLog' => 0}
И понадобилось создать дополнительно TV поле, которое бы определяло участвует товар в выборке или нет.Сделал TV поле searching. Попробовал добавить его в выборку вот так:
pdoResources' | snippet : [
'limit' => 0,
'parents' => $poselki,
'depth' => 0,
'return' => 'ids',
'select' => '{
"modResource":"*",
"Status":"`value` AS `sell_status`"
}',
'leftJoin' => '{
"Status":{"class":"msProductOption","on":"Status.product_id = modResource.id AND Status.key = \'sell_status\'"}
}',
'includeTVs' => 'searching',
'where' => '{"searching":"1", "AND:Status.value:IN":['',0,2]}',
'showLog' => 0
Но работает все точно так же как и раньше, TV поле searching игнорируетсяПрошу помочь подсказать, что именно не так в where?
Комментарии: 10
обработка tv уже давно используется в &tvFilters
Александр, благодарю! Именно его и нужно было использовать, этот параметр.
'showLog' => 0
Это чтобы угадывать интереснее было?Ведь если указать 1, то сразу будет понятно, как идёт выборка и что там игнорируется.
Логично, но по какой-то причине на момент написания поста он не срабатывал, поэтому текст вывода не приложил.
Либо ты не авторизован в админке, либо авторизован на сайте как юзер — других вариантов нет.
Ну и всё, указанное в &tvFilters, парсится и передаётся в &where, так что это просто лишнее звено для совместимости с getResources.
Ну и всё, указанное в &tvFilters, парсится и передаётся в &where, так что это просто лишнее звено для совместимости с getResources.
Да, я понимаю что нужно быть авторизованным в админке чтобы видеть вывод этот. Днем из одного места делал все видно было, а вечером из дома уже под этим же админским пользователем почему-то нет. Ну, дело позднее было, может что-то не так делал)
Что касается
Что касается
where
, то получается можно просто дописать в него это условие?
Нужно.
Причём, писать лучше массивом, потому что сейчас у тебя там JSON с ошибкой:
Причём, писать лучше массивом, потому что сейчас у тебя там JSON с ошибкой:
'includeTVs' => 'searching',
'where' => [
'searching' => 1,
'Status.value:IN' => ['', 0, 2],
],
Тоже самое касается и join — все сниппеты pdoTools давно понимают указание массивов через Fenom.
Василий, большое человеческое спасибо за такое подробное разъяснение!
Василий, т.е. tvFilters параметр — необязателен? Я недавно тоже тыкался на выборке с TV, по sql запросу в select TV добавлялось, но where полностью игнорировал параметр.
Еще небольшой оффтоп, по debugparser. В чем может заключаться ошибка, если вместо тега (который обработался), он выводит отрендереный код страницы?
Еще небольшой оффтоп, по debugparser. В чем может заключаться ошибка, если вместо тега (который обработался), он выводит отрендереный код страницы?
В итоге привел по наводке Александра к такому виду
{pdoResources' | snippet : [
'limit' => 0,
'parents' => $poselki,
'depth' => 0,
'return' => 'ids',
'select' => '{
"modResource":"*",
"Status":"`value` AS `sell_status`"
}',
'leftJoin' => '{
"Status":{"class":"msProductOption","on":"Status.product_id = modResource.id AND Status.key = \'sell_status\'"}
}',
'includeTVs' => 'searching',
'tvFilters' => 'searching==1',
'where' => '{"searching":"1", "AND:Status.value:IN":['',0,2]}',
'showLog' => 0}
И все заработало как надо.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.