Документация для разработчиков

Свойства корзины

Внимание! Если корзина привязана к заказу, то использовать метод \Bitrix\Sale\Basket::save() для сохранения категорически запрещается. Необходимо выполнять сохранение через заказ: \Bitrix\Sale\Order::save(). Помимо всего этого в одной из ближайших версий вызов \Bitrix\Sale\BasketPropertiesCollection::save() будет генерировать ошибку уровня E_WARNING.

  • Получение свойств товарной позиции в корзине
  • Получение конкретного свойства
  • Добавление нового свойства
  • Обновление свойства
  • Удаление свойства
  • Перезапись всех имеющихся свойств
  • Получение свойств товарной позиции в корзине

    • Работа с коллекцией
      $collection = $basketItem->getPropertyCollection();
      foreach ($collection as $item)
      {
      	// $item - объект класса \Bitrix\Sale\BasketPropertyItem
      }
      
    • Работа с массивом

      Помимо объектов есть возможность напрямую обращаться к базе через метод \Bitrix\Sale\BasketPropertiesCollection::getList($parameters).

      Метод всегда возвращает объект Bitrix\Main\DB\Result, из которого можно получить данные с помощью метода fetch().

      Параметр Описание С версии
      $parameters Массив, структура которого полностью соответствует структуре ORM'ного getList.
      // получение списка свойств для товара с кодом 123
      $dbRes = \Bitrix\Sale\BasketPropertiesCollection::getList([
      	'select' => ['*'],
      	'filter' => [
      		'=BASKET_ID' => 123, 
      	]
      ]);
      
      while ($item = $dbRes->fetch())
      {
      	var_dump($item);
      }
      

    Получение конкретного свойства

    $collection = $baketItem->getPropertyCollection();
    
    • по ID
      $property = $collection->getItemById($id);
      
    • по внутреннему индексу
      $property = $collection->getItemByIndex($index);
      

    Добавление нового свойства

    // $basket - объект класса \Bitrix\Sale\Basket
    foreach ($basket as $basketItem)
    {
    	$collection = $basketItem->getPropertyCollection();
    
    	$item = $collection->createItem();
    	$item->setFields([
    		'NAME' => 'Новое свойство',
    		'CODE' => 'XXX',
    		'VALUE' => 'Значение',
    	]);
    }
    	
    

    Обновление свойства

    // $basketItem - объект класса \Bitrix\Sale\BasketItem
    $collection = $basketItem->getPropertyCollection();
    $property = $collection->getItemById(123);
    $property->setField('VALUE', 'Новое значение');
    
    'NAME', // название свойства
    'VALUE', // значение свойства
    'CODE', // код свойства
    'SORT', // сортировка
    'XML_ID' // внешний код
    

    Удаление свойства

    // $basketItem - объект класса \Bitrix\Sale\Basket
    $collection = $basketItem->getPropertyCollection();
    $property = $collection->getItemById(123);
    $property->delete();
    

    Перезапись всех имеющихся свойств

    Метод \Bitrix\Sale\BasketPropertiesCollection::redefine работает следующим образом:

    • если свойство есть в коллекции, но отсутствует во входных данных, то свойство будет удалено
    • если свойство есть в коллекции, а так же присутствует во входных данных, то свойство обновится
    • если свойства нет в коллекции, но присутствует во входных данных, то свойство добавится
    // $basket - объект класса \Bitrix\Sale\BasketBase
    foreach ($basket as $basketItem)
    {
    	$collection = $basketItem->getPropertyCollection();
    	$collection->redefine([
    		[
    			'NAME' => 'Новое свойство',
    			'CODE' => 'XXX',
    			'VALUE' => 'Значение',
    		]
    	]);
    }
    
    


    Пользовательские комментарии

    Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

    Для этого нужно всего лишь авторизоваться на сайте

    Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

    Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
    © «Битрикс», 2001-2019, «1С-Битрикс», 2019
    Наверх