Skip to content
This repository has been archived by the owner on Sep 9, 2020. It is now read-only.

Работа со свойствами товара корзины (D7)

John edited this page Nov 9, 2016 · 30 revisions

Работа с BasketPropertiesCollection

Получение корзины текущего пользователя

$basket = \Bitrix\Sale\Basket::loadItemsForFUser(
   \Bitrix\Sale\Fuser::getId(),
   \Bitrix\Main\Context::getCurrent()->getSite()
);

// массив объектов \Bitrix\Sale\BasketItem
$basketItems = $basket->getBasketItems(); 

$basketItem = $basketItems[0]; //current($basketItems);

// Свойства записи, массив объектов Sale\BasketPropertyItem
$basketPropertyCollection = $basketItem->getPropertyCollection(); 

Загрузка коллекции из товара корзины

//$basketItem - объект \Bitrix\Sale\BasketItem
$basketPropertyCollection = \Bitrix\Sale\BasketPropertiesCollection::load($basketItem);

Получение ID корзины

$basketPropertyCollection->getBasketId();

Получение товара

$basketPropertyCollection->getBasketItem();

Производится над всеми свойствами товара (пока неизвестно для чего)

$basketPropertyCollection->verify();

Получаем массив со всеми свойствами товара

$props = $basketPropertyCollection->getPropertyValues();

//или так
foreach($basketPropertyCollection as $property)
{
    $props[] = $property->getFieldValues();
}

Получение свойства по его значению

$property = $basketPropertyCollection->getPropertyItemByValue([
   'VALUE' => 'NMTA TORTORA', // Обязательно для указания
   'CODE' => 'COLOR', //Обязательно для указания (или CODE или NAME)
   'NAME' => 'Цвет', //Обязательно для указания (или CODE или NAME)
]);

Проверка на существование свойства

$isExists = $basketPropertyCollection->isPropertyAlreadyExists([
   'VALUE' => 'NMTA TORTORA', // Обязательно для указания
   'CODE' => 'COLOR', //Обязательно для указания (или CODE или NAME)
   'NAME' => 'Цвет', //Обязательно для указания (или CODE или NAME)
]);

Работа с BasketPropertyItem

foreach($basketPropertyCollection as $property)
{
    //Получение ID
    $property->getId()

    //Получение любого поля
    $property->getField('CODE')

    //Получение всех доступных полей
    $property->getAllFields()
}

Получение свойств товара корзины через ORM (b_sale_basket_props)

//ID товара в корзине
$basketItemId = 111;

$res = Bitrix\Sale\Internals\BasketPropertyTable::getList([
   'order' => [
      "SORT" => "ASC",
      "ID" => "ASC"
   ],
   'filter' => [
      "BASKET_ID" => $basketItemId,
   ],
]);

while($property = $res->fetch())
{
   //Код
}

Поля таблицы b_sale_basket_props:

  • ID - ID записи
  • BASKET_ID - ID товара корзины
  • NAME - Название свойства товара
  • VALUE - Значение свойства товара
  • CODE - Код свойства товара
  • SORT - Поле сортировки
Clone this wiki locally