pdoResources и join по значению TV

Всем привет, нужно загрузить ресурсы, и подтянуть к ним кастомные данные из другого класса. Вроде все просто, но как указать название TV в «join on»?

"on": "modResource.TVarticleСat = Category.id"

{'pdoResources' | snippet : [
     'parents' => $_modx->config['blogId'],
     'includeTVs' => 'articleCat',
     'toPlaceholder' => 'blogArchiveJson',
     'where' => json_encode([
	    "id:NOT IN" => $hlIds
      ]),
      'loadModels' => 'blog',
      'class' => 'modResource',
      'leftJoin' => '{
          "Category": {
              "class": "Category",
              "on": "modResource.TVarticleСat = Category.id"
          }
      }',
      'select' => '
          modResource.pagetitle,
          Category.id as cat_id,
          Category.title as cat_title
      ',
      'showLog' => 1,
      'return' => 'json'
]}
Перепробовал вроде все: tv.articleCat, modResource.tv.articleCat, modResource.TVarticlecat, articleCat и так далее. Подскажите плз, как правильно
dopeless
15 мая 2019, 13:19
modx.pro
1 639
0

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

Наумов Алексей
15 мая 2019, 13:59
0
showLog что показывает?
    dopeless
    15 мая 2019, 14:04
    0
    Could not process query, error #1054: Unknown column 'modResource.TVarticleСat' in 'on clause'

    как бы не называл TV — всегда эта ошибка. Если значение TV подставляю вручную (просто цифру ставлю) — тогда все работает правильно. Вот весь лог, если что (там учавствуют еще несколько полей, которые я убрал в запросе для упрощения)
    0.0000930: Loaded model "blog" from "/core/components/blog/model/"
    0.0000751: pdoTools loaded
    0.0000298: xPDO query object created
    0.0006292: Included list of tvs: mainImage, articleSnippetMainTitle, articleSnippetSubTitle, articleCat, blogEvent
    0.0002899: leftJoined Category as Category
    0.0002029: leftJoined modTemplateVarResource as TVmainimage
    0.0002129: leftJoined modTemplateVarResource as TVarticlesnippetmaintitle
    0.0001860: leftJoined modTemplateVarResource as TVarticlesnippetsubtitle
    0.0001919: leftJoined modTemplateVarResource as TVarticlecat
    0.0002239: leftJoined modTemplateVarResource as TVblogevent
    0.0000219: Added selection of modResource: 
                            modResource.pagetitle,
                            Category.id as cat_id,
                            Category.title as cat_title
                        
    0.0000060: Added selection of modTemplateVarResource: IFNULL(`value`, '') AS `tv.mainImage`
    0.0000050: Added selection of modTemplateVarResource: IFNULL(`value`, '') AS `tv.articleSnippetMainTitle`
    0.0000031: Added selection of modTemplateVarResource: IFNULL(`value`, '') AS `tv.articleSnippetSubTitle`
    0.0000031: Added selection of modTemplateVarResource: IFNULL(`value`, '') AS `tv.articleCat`
    0.0000041: Added selection of modTemplateVarResource: IFNULL(`value`, '') AS `tv.blogEvent`
    0.0000062: Replaced TV conditions
    0.0005529: Processed additional conditions
    0.0008540: Added where condition: id:NOT IN(14,11,12,13,11,11,11,11), modResource.parent:IN(8,11,12,13,14,15), modResource.published=1, modResource.deleted=0
    0.0000060: Replaced TV conditions
    0.0000820: Sorted by modResource.publishedon, DESC
    0.0000021: Limited to 10, offset 0
    0.0002198: SQL prepared "SELECT modResource.pagetitle, Category.id as cat_id, Category.title as cat_title, IFNULL(`TVmainimage`.`value`, '') AS `tv.mainImage`, IFNULL(`TVarticlesnippetmaintitle`.`value`, '') AS `tv.articleSnippetMainTitle`, IFNULL(`TVarticlesnippetsubtitle`.`value`, '') AS `tv.articleSnippetSubTitle`, IFNULL(`TVarticlecat`.`value`, '') AS `tv.articleCat`, IFNULL(`TVblogevent`.`value`, '') AS `tv.blogEvent` FROM `modx_site_content` AS `modResource` LEFT JOIN `modx_migx_blog_categories` `Category` ON tv.articleCat = Category.id LEFT JOIN `modx_site_tmplvar_contentvalues` `TVmainimage` ON `TVmainimage`.`contentid` = `modResource`.`id` AND `TVmainimage`.`tmplvarid` = 23 LEFT JOIN `modx_site_tmplvar_contentvalues` `TVarticlesnippetmaintitle` ON `TVarticlesnippetmaintitle`.`contentid` = `modResource`.`id` AND `TVarticlesnippetmaintitle`.`tmplvarid` = 24 LEFT JOIN `modx_site_tmplvar_contentvalues` `TVarticlesnippetsubtitle` ON `TVarticlesnippetsubtitle`.`contentid` = `modResource`.`id` AND `TVarticlesnippetsubtitle`.`tmplvarid` = 25 LEFT JOIN `modx_site_tmplvar_contentvalues` `TVarticlecat` ON `TVarticlecat`.`contentid` = `modResource`.`id` AND `TVarticlecat`.`tmplvarid` = 33 LEFT JOIN `modx_site_tmplvar_contentvalues` `TVblogevent` ON `TVblogevent`.`contentid` = `modResource`.`id` AND `TVblogevent`.`tmplvarid` = 34 WHERE  ( `modResource`.`id` NOT IN (14,11,12,13,11,11,11,11) AND `modResource`.`parent` IN (8,11,12,13,14,15) AND `modResource`.`published` = 1 AND `modResource`.`deleted` = 0 )  ORDER BY modResource.publishedon DESC LIMIT 10 "
    0.0023592: Could not process query, error #1054: Unknown column 'tv.articleCat' in 'on clause'
    0.0058780: Total time
    2 097 152: Memory usage
      Наумов Алексей
      15 мая 2019, 15:32
      0
      Итак, жмем на этой странице Ctrl + F и ищем:
      1. сначала articleCat
      2. потом articleСat

      Далее исправляем косяки.
        dopeless
        15 мая 2019, 15:48
        0
        Похоже, эта опечатка попала в код уже когда постил сюда. Еще раз попробовал все варианты (с правильной раскладкой) — не работает.
          Наумов Алексей
          15 мая 2019, 15:56
          0
          А так не сработает?
          "on": "`tv.articleCat` = `Category`.`id`"
          Поле выбирается с точкой «tv.articleCat», она воспринимается разделителем, выглядит как таблица tv, поле articleCat.
            dopeless
            15 мая 2019, 17:07
            0
            Нет, так то же самое…

            Could not process query, error #1054: Unknown column 'tv.articleCat' in 'on clause'

            На всякий случай попробовал так

            «on»: "`modResource`.`tv.articleCat` = `Category`.`id`"

            Тоже не работает…
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    6