Ошибка при запросе с указанием доп.поля

Подскажите пожалуйста, как правильно сделать запрос и найти все товары с указанием своего дополнительного поля.

$products= $modx->getCollection('msProduct', array(
    'createdby' => $idUser,
    'parent:IN' => $category,
    'block' => 0
    ));
где block поле созданное мной.
Ругается:
**public_html/core/xpdo/om/xpdoobject.class.php : 240)
Error 42S22 executing statement: 
Array
(
    [0] => 42S22
    [1] => 1054
    [2] => Unknown column 'msProduct.block' in 'where clause'
)
При этом что
$product->get('block');
получает запись.
Eugene Generalov
04 марта 2017, 13:34
modx.pro
1 843
0

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

Eugene Generalov
04 марта 2017, 20:18
0
Не уж то только через PDO?
$sql = $modx->prepare(
    'SELECT id FROM modx_ms2_products WHERE `block` = 0 AND id IN
        (SELECT id from modx_site_content 
            WHERE `createdby` = '.$idUser.' 
            AND `parent` IN ('.implode($category,',').') 
        )
    ');
    Евгений Webinmd
    05 марта 2017, 13:37
    0
    Вам нужно в where условие прописать, вроде как вот так, но там уже в зависимости от того что за поле block (tv или поле для минишопа)

    'where' => '{ "Data.block":"0" }'
    или
    'where' => '{ "block":"0" }'
    Это при условии что у вас в базе у поля значение «0»
      Eugene Generalov
      05 марта 2017, 15:46
      0
      Если where прописывать в сниппет msProducts, то он фильтрует (это пригодится, спасибо).
      Но мне необходимо получить их через getCollection, хотя бы для того, чтобы посчитать их количество.
      Eugene Generalov
      05 марта 2017, 22:10
      0
      Посмотрев в файле .map можно было увидеть, что msProduct связан с msProductData через Data
      Получилось следующим образом:
      $idUser = 7;
      $categoryId = 12;
      $category = $modx->getChildIds($categoryId, 10, array('context' => 'web'));
      $query = $modx->newQuery('msProduct');
      $query->leftJoin('msProductData', 'Data');
      $query -> where(array(
          'msProduct.createdby' => $idUser,
          'msProduct.parent:IN' => $category,
          'Data.block' => 0
          ));
      $products= $modx->getCollection('msProduct', $query);
          
      echo count($products);
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        4