Фильтрация по опциям в msProducts

Прошу помощи.
Нужно вывести список товаров, у которых пользовательская опция соответствует таковой же у текущего ресурса. Через msProducts делаю так:
'where' => [
    'Data.price:>=' => $_modx->resource.price * 0.85,
    'Data.price:<=' => $_modx->resource.price * 1.15,
    'Data.device_type:=' => $_modx->resource.device_type[0]
]
Но не выводит вообще ничего. Ошибка
Could not process query, error #1054: Unknown column 'Data.device_type' in 'where clause'
Сама опция «device_type» — список с автодополнением.
Evgeny Epifanov
20 апреля 2019, 23:33
modx.pro
1
965
0

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

Evgeny Epifanov
23 апреля 2019, 00:57
+1
Никто не ответил…
Пришлось углубиться в документацию и как ни странно, решение нашлось. Вероятно не так изящно, но работает. Может кому пригодится.
'leftJoin' => [
    'DevType' => [
        'class' => 'msProductOption',
        'on' => 'msProduct.id = DevType.product_id and DevType.key = "device_type"',
    ],
],
'where' => [
    'Data.price:>=' => $_modx->resource.price * 0.85,
    'Data.price:<=' => $_modx->resource.price * 1.15,
    'DevType.value:=' => $_modx->resource.device_type[0]
]
Подробнее написано тут
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
2