условие where для TV

Подскажите, что делаю неправильно.
Есть вывод ресурсов
[[!pdoPage?
                    &element=`pdoResources`
                    &parents=`[[*id]]`
                    &depth=`0`
                    &tpl=`tpl.products_office_collection`               
		    &includeTVs=`warehouse_for_collection`
                    
                    &where=`{"warehouse_for_collection":"На заказ"}`
                    
                ]]
С поиском по TV полю. Поле существует, передается и выводится в шаблоне и имеет именно такое значение — На заказ. Поле задано как radio, поэтому ошибиться в вводе невозможно.

Но сниппет ничего не возвращает. Поиск по этому вопросу привел меня сначала на эту страницу
modx.pro/help/2991/
2014 года, где говорится что да, TV не могут участвовать в where. Затем на эту, где говорит автор, что после версии pdoTools 1.8 все исправлено
modx.pro/help/2847/
Но у меня самая последняя версия pdo, значит я делаю что-то не так?

Спасибо.
Александр Мельник
14 июня 2017, 11:52
modx.pro
8 838
0

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

Кирилл
14 июня 2017, 19:04
+1
Изучайте документацию, там все есть.

[[!pdoPage?
                    &element=`pdoResources`
                    &parents=`[[*id]]`
                    &depth=`0`
                    &tpl=`tpl.products_office_collection`               
		    &includeTVs=`warehouse_for_collection`                    
                    &tvFilters=`warehouse_for_collection==На заказ`                    
                ]]
    Александр Мельник
    14 июня 2017, 19:08
    0
    Да, Вы правы.
    Спасибо.
      Александр Мельник
      14 июня 2017, 19:20
      0
      Кирилл, ну что-то совсем у меня руки не оттуда.
      Сделал фильтрацию по &tvFilters и снова ничего.
      Вот результат вызова pdoResources без фильтрации и с пустым tpl
      [content_type] => 1
          [uri] => kabinetyi-rukovoditelya/kabinet-4/
          [uri_override] => 0
          [hide_children_in_tree] => 0
          [show_in_tree] => 1
          [properties] => 
          [tv.warehouse_for_collection] => На заказ
      То есть лежит в warehouse_for_collection строка На заказ
      Вызываю тот же pdoResources с условием
      [[!pdoResources?
                          
                          &parents=`[[*id]]`
                          &depth=`0`
                          &tpl=`tpl.products_office_collection`
                          &includeTVs=`warehouse_for_collection`
                          &limit=`9`
                          &tvFilters=`warehouse_for_collection==На заказ`
                          
                          
                      ]]
      и результат 0 строк.

      Ткните носом где я еще туплю. Строковые значения на складе и на заказ заменял на числовые 0 и 1, не помоголо.

        Кирилл
        14 июня 2017, 19:33
        0
        Добавьте &showLog=`1` и посмотрите sql запрос, попробуйте его в phpmyadmin выполнить. Ну и тут напишите вывод логов, может понятнее станет.
          Александр Мельник
          14 июня 2017, 19:56
          0
          вот полный showlog
          0.0001380: pdoTools loaded
          0.0000291: xPDO query object created
          0.0000350: Added TVs filters
          0.0004351: Included list of tvs: warehouse_for_collection, prestig_collection, img_block_collection, country_collection, price_collection, old_price_collection
          0.0002379: leftJoined modTemplateVarResource as TVwarehouse_for_collection
          0.0002091: leftJoined modTemplateVarResource as TVprestig_collection
          0.0003119: leftJoined modTemplateVarResource as TVimg_block_collection
          0.0002148: leftJoined modTemplateVarResource as TVcountry_collection
          0.0002050: leftJoined modTemplateVarResource as TVprice_collection
          0.0002019: leftJoined modTemplateVarResource as TVold_price_collection
          0.0004241: Added selection of modResource: 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`
          0.0000112: Added selection of modTemplateVarResource: IFNULL(`value`, 'На заказ') AS `tv.warehouse_for_collection`
          0.0000081: Added selection of modTemplateVarResource: IFNULL(`value`, 'Бизнес-класс') AS `tv.prestig_collection`
          0.0000069: Added selection of modTemplateVarResource: IFNULL(`value`, '') AS `tv.img_block_collection`
          0.0000072: Added selection of modTemplateVarResource: IFNULL(`value`, '') AS `tv.country_collection`
          0.0000072: Added selection of modTemplateVarResource: IFNULL(`value`, '') AS `tv.price_collection`
          0.0000069: Added selection of modTemplateVarResource: IFNULL(`value`, '') AS `tv.old_price_collection`
          0.0000410: Replaced TV conditions
          0.0002632: Processed additional conditions
          0.0005989: Added where condition: 0=`TVwarehouse_for_collection`.`value` LIKE 'На заказ', modResource.parent:IN(30), modResource.published=1, modResource.deleted=0
          0.0000360: Replaced TV conditions
          0.0001481: Sorted by modResource.publishedon, DESC
          0.0000019: Limited to 9, offset 0
          0.0002871: 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`.`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(`TVwarehouse_for_collection`.`value`, 'На заказ') AS `tv.warehouse_for_collection`, IFNULL(`TVprestig_collection`.`value`, 'Бизнес-класс') AS `tv.prestig_collection`, IFNULL(`TVimg_block_collection`.`value`, '') AS `tv.img_block_collection`, IFNULL(`TVcountry_collection`.`value`, '') AS `tv.country_collection`, IFNULL(`TVprice_collection`.`value`, '') AS `tv.price_collection`, IFNULL(`TVold_price_collection`.`value`, '') AS `tv.old_price_collection` FROM `office_site_content` AS `modResource` LEFT JOIN `office_site_tmplvar_contentvalues` `TVwarehouse_for_collection` ON `TVwarehouse_for_collection`.`contentid` = `modResource`.`id` AND `TVwarehouse_for_collection`.`tmplvarid` = 7 LEFT JOIN `office_site_tmplvar_contentvalues` `TVprestig_collection` ON `TVprestig_collection`.`contentid` = `modResource`.`id` AND `TVprestig_collection`.`tmplvarid` = 5 LEFT JOIN `office_site_tmplvar_contentvalues` `TVimg_block_collection` ON `TVimg_block_collection`.`contentid` = `modResource`.`id` AND `TVimg_block_collection`.`tmplvarid` = 9 LEFT JOIN `office_site_tmplvar_contentvalues` `TVcountry_collection` ON `TVcountry_collection`.`contentid` = `modResource`.`id` AND `TVcountry_collection`.`tmplvarid` = 10 LEFT JOIN `office_site_tmplvar_contentvalues` `TVprice_collection` ON `TVprice_collection`.`contentid` = `modResource`.`id` AND `TVprice_collection`.`tmplvarid` = 11 LEFT JOIN `office_site_tmplvar_contentvalues` `TVold_price_collection` ON `TVold_price_collection`.`contentid` = `modResource`.`id` AND `TVold_price_collection`.`tmplvarid` = 12 WHERE  ( `TVwarehouse_for_collection`.`value` LIKE 'На заказ' AND `modResource`.`parent` IN (30) AND `modResource`.`published` = 1 AND `modResource`.`deleted` = 0 )  ORDER BY modResource.publishedon DESC LIMIT 9 "
          0.0006509: SQL executed
          0.0000570: Total rows: 0
          0.0000091: Rows fetched
          0.0000181: Prepared and processed TVs
          0.0000012: Returning processed chunks
          0.0044119: Total time
          6 553 600: Memory usage
          Выполнение данного SQL запроса в PMA вернул MySQL вернула пустой результат (т.е. ноль строк). (Запрос занял 0.0009 сек.)
            Александр Мельник
            14 июня 2017, 21:15
            0
            Ни по одному из передаваемых TV фильтрация не идет, возвращает ноль строк.
            При всем при этом tv поля отлично отображаются в шаблоне.
              Кирилл
              16 июня 2017, 07:41
              0
              Доступ к тестовому:

              s9969.h8.modhost.pro/manager/
              s9969
              QVaIGxhuRKsB

              Вывод pdoPage s9969.h8.modhost.pro/index.php?id=55
              В админке ресурс так и называется pdopage.
              Все корректно фильтрует.
                Александр Мельник
                16 июня 2017, 08:26
                0
                Спасибо, что Вы так ответственно подошли.
                Сложно сказать, что это был за глюк.
                Оказывается, как ответил Василий Наумкин, то и where должно работать с TV полями.
                Я на следующий день раскоментировал вызов сниппета с условиями where? который ничего не находил и вдруг о чудо — он стал возвращать результаты. Хотя ничего на сайте не менялось.

                Я уже сталкивался с подобным полгода назад на одном проекте, который делали другие люди.
                Это вот описано в моем вопросе modx.pro/help/11402/
                Проект этот делал не я, он проработал несколько лет и вдруг начал выдавать ерунду в страницы. Перестало работать where. Прошло несколько дней и все само вернулось назад.
      Александр Мельник
      14 июня 2017, 21:28
      0
      Это какие-то глюки pdoResources
      getResources прекрасно фильтрует.
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        9