Как получить TV параметр?

Есть такая выбора, без includeTVs она работает
$params['parents'] = 1470;
$params['limit'] = '0';
$params['depth'] = '0';
$params['showHidden'] = '1';
$params['showUnpublished'] = '1';
$params['includeTVs'] = 'vznos';
$params['where'] = 'pagetitle='.$stag.'';
$params['return'] = 'json';
$vst_json = $modx->runSnippet('pdoResources', $params);
в таком виде выдает ошибку
Error 42S22 executing statement:
Array
(
[0] => 42S22
[1] => 1054
[2] => Unknown column 'tv.vznos' in 'where clause'
)
Если поменять
$params['includeTVs'] = 'vznos';
на
$params['includeTVs'] = 'tv.vznos';
ошибок нет, но и переменной $vst_json нет параметра tv.vznos, хотя у данного ресурса он точно есть. В чем проблема?
Андрей
23 апреля 2022, 14:00
modx.pro
146
0

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

Артур
23 апреля 2022, 20:47
0
Я думаю дело в
$params['where'] = 'pagetitle='.$stag.'';
У тебя тут строка, а должен быть или масcив или json
    Андрей
    23 апреля 2022, 21:23
    0
    Очень сомнительно. Если я включаю в выборку TV параметр vznos, а не tv.vznos, то ошибка не пропадает даже если я вообще убираю where.
    С другой стороны, без tv параметров условие прописанное в where работают.
      Артур
      23 апреля 2022, 21:55
      0
      За исключением того о чём я писал выше, ошибок я не вижу. vznos это точно ТВ?
        Андрей
        23 апреля 2022, 22:17
        0
        Точнее не бывает, я его потом все равно получаю, через getObject и getTVValue.
        Просто получается лишний запрос, ну и в принципе хотелось бы понять что не так, для понимания.
          Артур
          23 апреля 2022, 22:30
          0
          А весь код покажи.
            Андрей
            23 апреля 2022, 22:49
            0
            Весь код там большой, 4 аналогичные выборки и обработка полученных данных. В 3-х из них этот TV параметр у родителя, поэтому я вынужден получать его через дополнительный запрос, а в этом случае этот параметр есть у самого ресурса.
            И еще смущает что когда я его выбираю как он называется (vznos), то страница наглухо падает от 500 ошибки, а если как tv.vznos то ошибки нет, код работает корректно, кроме того что в полученном json массиве нет нужного TV параметра.
              Артур
              23 апреля 2022, 23:16
              0
              Ну не знаю, я бы наверное вообще отказался от вызова сниппета в своём сниппите.
    Stepan
    23 апреля 2022, 23:56
    +1
    есть там некоторые ограничения из-за LEFT JOIN при includeTVs
    а у вас не правильно, тут полюбас будет так:
    $params['where'] = ['pagetitle'=> $stag];
    и сделайте если под админом
    $params['showLog'] = 1;
    и return на время теста отключите
      Андрей
      24 апреля 2022, 11:35
      0
      да, вот так работает. спасибо.
      Дмитрий Середюк
      24 апреля 2022, 02:23
      0
      Насколько помню есть параметр tvPrefix и он по умолчанию равеy 'tv.' Попробуйте указать
      $params['tvPrefix'] = '';
        Андрей
        24 апреля 2022, 11:04
        0
        префикс я наоборот добавлял, стандартный tv, это не помогает. если его убрать то тоже ошибка
        Error 42S22 executing statement: 
        Array
        (
            [0] => 42S22
            [1] => 1054
            [2] => Unknown column 'modResource.vznos' in 'where clause'
        )
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        11