Помощь с выборкой по производителю, SOS

Василий, доброе утро!
Заранее благодарю за помощь, если откликнешься.

Есть следующий код:

[[msProducts?
	&parents=`0`
	&class=`msCategory`
	&where=`{"context_key":"catalog", "class_key":"msCategory"}`
	&tpl=`category.row.tpl`
	&select=`{
		"msCategory":"*"
		,"msProduct":"msProduct.id as product_id"
	}`
	&innerJoin=`{
		"msProduct": {"class":"msProduct", "alias":"msProduct", "on":"msProduct.parent = msCategory.id AND msProduct.class_key = 'msProduct' AND msProduct.published = true"}
		}`
	&sortdir=`asc`
	&limit=`0`
	&showLog=`1`
]]

Все замечательно работает, выбираются категории и товары из контекста «каталог». Задача следующая, необходимо, чтобы выбирались, только категории и товары, например с привязкой к производителю VendorName:

&where=`{"Vendor.name:LIKE":"%VendorName%"}`

Что необходимо приджоинить? Опробовал много вариантов, ничего не получилось.
Спасибо!
Виталий
08 февраля 2015, 05:47
modx.pro
6
3 047
0

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

Василий Наумкин
08 февраля 2015, 09:13
+2
Производителя можно присоединить только через таблицу данных товара. Поле vendor id — там.

Причем, лучше использовать pdoResources, потому что в msProducts много ненужных для твой задачи дополнительных обработок.
[[!pdoResources?
	&parents=`0`
	&class=`msCategory`
	&select=`{
		"msCategory":"*"
		,"Product":"Product.id as product_id"
	}`
	&innerJoin=`{
		"Product": {"class":"msProduct", "on":"Product.parent = msCategory.id AND Product.class_key = 'msProduct' AND Product.published = 1 AND Product.deleted = 0"},
		"Data": {"class":"msProductData", "on":"Product.id = Data.id"},
		"Vendor": {"class":"msVendor", "on":"Data.vendor = Vendor.id"}
	}`
	&sortdir=`asc`
	&where=`{"Vendor.name:LIKE":"%Apple%", "class_key":"msCategory"}`
	&showLog=`1`
]]
    Виталий
    08 февраля 2015, 15:06
    0
    Спасибо, выборка работает, только есть нюанс. В результате выборки у нас получается подобное:

    — Категория Iphone 6
    — Товар 1 (производитель Apple)
    — Категория Iphone 6
    — Товар 2 (производитель Apple)
    — Категория Iphone 6 Plus
    — Товар 3 (производитель Apple)

    Можно ли как-то объединить товары в общие категории? Вот так например:

    — Категория Iphone 6
    — Товар 1 (производитель Apple)
    — Товар 2 (производитель Apple)
    — Категория Iphone 6 Plus
    — Товар 3 (производитель Apple)

    Я думаю, многим будет полезно данное решение. Спасибо еще раз.
Виталий
08 февраля 2015, 15:42
0
Спасибо. И последний вопрос, можно ли собрать не прямых потомков категорий товаров:

— Категория Iphone 6 (Чехлы)
— Категория Iphone 6 Plus (Чехлы)
— Категория Iphone 6 Plus (Аксессуары)

А родительские категории:

— Чехлы
— Аксессуары
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    4