Выборка newQuery (msProduct) по значению tv

Много видел подобных вопросов, ответы некоторые 2014 аж, поэтому не завелось к сожалению.

Делаю выборку таким образом (например по цене в конкретных категориях) — работает!

$query = $modx->newQuery('msProduct');
$query->leftJoin('msProductData', 'Data');
$query->where(array(
    'msProduct.parent:IN' => [10, 20],
    'Data.price' => '60',
));
$products= $modx->getCollection('msProduct', $query);
 
foreach ($products as $k => $product) { 
    $title = $product->get('pagetitle');
    // ....	
}
Однако, как я понял по произвольному tv-параметру в данном случаи не отобрать…

Например есть у товара tv с именем art, в итоге такое условие:

$query->where(array(
    'msProduct.parent:IN' => [10, 20],
    'Data.art' => 10,
));
не отбирает…

'art' => 10, к сожалению тоже. Как в условии достучаться до этого произвольного tv?
Благоадарю.
Александр
29 июня 2018, 11:37
modx.pro
3 030
0

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

Aleksandr Huz
29 июня 2018, 16:09
+2
Еще одна таблица нужна — modTemplateVarResource
<?php
$art = 23; // id tv
$query = $modx->newQuery('msProduct');
$query->leftJoin('msProductData', 'Data');
$query->leftJoin('modTemplateVarResource', 'art', 'msProduct.id = art.contentid AND art.tmplvarid = ' . $art);
$query->groupby('msProduct.id');
$query->where(array(
    'msProduct.parent:IN' => [10, 20],
    'Data.price' => '60',
    'art.value' => '10'
));
$products= $modx->getCollection('msProduct', $query);
 
foreach ($products as $k => $product) { 
    $title = $product->get('pagetitle');
}
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    1