oc-shopaholic / oc-orders-shopaholic-plugin

🛒 Orders (cart) extension for Shopaholic plugin
https://octobercms.com/plugin/lovata-ordersshopaholic
GNU General Public License v3.0
27 stars 18 forks source link

Не выходит получить коллекцию опций свойств PropertyValueCollection #100

Open vodolgiy opened 4 years ago

vodolgiy commented 4 years ago

Например, Lovata\PropertiesShopaholic\Classes\Collection\PropertyValueCollection::make()->sort() не возвращает ничего. Есть свойство, у него есть значения. Тут тоже пусто: Lovata\PropertiesShopaholic\Classes\Collection\PropertyCollection::make()->first()->property_value

kharanenka commented 4 years ago

Значание для объекта PropertyValueCollection заполняются только при вызове через объект PropertyItem. Заполнение завичит от того, как был получен объект PropertyItem. Из объекта товара/офера, из категории или из компонента FilterPanel. Метод sort не делает выборку из БД. Он сортирует текущую коллекцию. Т.к. она пуста, то и результат пуст.

vodolgiy commented 4 years ago

Значание для объекта PropertyValueCollection заполняются только при вызове через объект PropertyItem. Заполнение завичит от того, как был получен объект PropertyItem. Из объекта товара/офера, из категории или из компонента FilterPanel. Метод sort не делает выборку из БД. Он сортирует текущую коллекцию. Т.к. она пуста, то и результат пуст.

Спасибо Вам за ответ, прежде всего, но у меня все еще есть трудности :) Обрисую задачу: мне нужно получить список значений свойства, привязанного к категории через набор. На данном этапе свойство приявязано к товарным предложениям в категории. Суть Вашей мысли я примерно уловил (хочется отметить, что отдельная система кэширования - круто, и качество кода на высоте), пробовал получать объект CategoryItem, у него есть свойство _offer_propertylist, которое у меня прекрасно возвращает массив со свойствами и параметрами фильтра, и есть (в документации) свойство _offerproperty, которое должно возвращать коллекцию, на сколько я понял, но не возвращает ничего. Пробовал так же через свойство _propertyset, но не разобрался, как дотянуться до параметров свойств. Буду благодарен за помощь.

kharanenka commented 4 years ago

Вы имеете ввиду, что вам нужно получить свойства и их значения для вывода панели фильтрации, используя объект категории?

vodolgiy commented 4 years ago

Нет, в своём компоненте мне нужно получить список значений свойства у категории по ID, если это возможно. Пока вышел таким образом, без кэша:

$categoryActions = \Lovata\Shopaholic\Models\Category::find(2)
    ->property_set
    ->first()
    ->offer_property
    ->where('code', 'actions')
    ->first()
    ->property_value;
lautsevich commented 4 years ago

@vodolgiy, рекомендую вам также присоединиться к чату нашего сообщества в Telegram - https://t.me/oc_Shopaholic_chat. Участники активно и охотно помогают вникать в нюансы Shopaholic.

vodolgiy commented 4 years ago

О, здорово, сейчас присоединюсь, спасибо ;)

kharanenka commented 4 years ago

Поробуйте у объекта PropertyItem вызывать метод setCategory() передавая в него CategoryItem. После этого получать из ProeprtyItem объект proeprty_value

vodolgiy commented 4 years ago

Без передачи модели (setModel) не работает, а с моделью - возвращает только выбранные значения, а не список значений