Фильтрация по опциям в msProducts
Прошу помощи.
Нужно вывести список товаров, у которых пользовательская опция соответствует таковой же у текущего ресурса. Через 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» — список с автодополнением. Комментарии: 2
Никто не ответил…
Пришлось углубиться в документацию и как ни странно, решение нашлось. Вероятно не так изящно, но работает. Может кому пригодится.
Пришлось углубиться в документацию и как ни странно, решение нашлось. Вероятно не так изящно, но работает. Может кому пригодится.
'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]
]
Подробнее написано тут
Это не странно, это закономерно )
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.