Как получить 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, хотя у данного ресурса он точно есть. В чем проблема? Комментарии: 11
Я думаю дело в
$params['where'] = 'pagetitle='.$stag.'';
У тебя тут строка, а должен быть или масcив или json
Очень сомнительно. Если я включаю в выборку TV параметр vznos, а не tv.vznos, то ошибка не пропадает даже если я вообще убираю where.
С другой стороны, без tv параметров условие прописанное в where работают.
С другой стороны, без tv параметров условие прописанное в where работают.
За исключением того о чём я писал выше, ошибок я не вижу. vznos это точно ТВ?
Точнее не бывает, я его потом все равно получаю, через getObject и getTVValue.
Просто получается лишний запрос, ну и в принципе хотелось бы понять что не так, для понимания.
Просто получается лишний запрос, ну и в принципе хотелось бы понять что не так, для понимания.
А весь код покажи.
Весь код там большой, 4 аналогичные выборки и обработка полученных данных. В 3-х из них этот TV параметр у родителя, поэтому я вынужден получать его через дополнительный запрос, а в этом случае этот параметр есть у самого ресурса.
И еще смущает что когда я его выбираю как он называется (vznos), то страница наглухо падает от 500 ошибки, а если как tv.vznos то ошибки нет, код работает корректно, кроме того что в полученном json массиве нет нужного TV параметра.
И еще смущает что когда я его выбираю как он называется (vznos), то страница наглухо падает от 500 ошибки, а если как tv.vznos то ошибки нет, код работает корректно, кроме того что в полученном json массиве нет нужного TV параметра.
Ну не знаю, я бы наверное вообще отказался от вызова сниппета в своём сниппите.
есть там некоторые ограничения из-за LEFT JOIN при includeTVs
а у вас не правильно, тут полюбас будет так:
а у вас не правильно, тут полюбас будет так:
$params['where'] = ['pagetitle'=> $stag];
и сделайте если под админом $params['showLog'] = 1;
и return на время теста отключите
да, вот так работает. спасибо.
Насколько помню есть параметр tvPrefix и он по умолчанию равеy 'tv.' Попробуйте указать
$params['tvPrefix'] = '';
префикс я наоборот добавлял, стандартный tv, это не помогает. если его убрать то тоже ошибка
Error 42S22 executing statement:
Array
(
[0] => 42S22
[1] => 1054
[2] => Unknown column 'modResource.vznos' in 'where clause'
)
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.