Разница между двумя командами выборки товаров для покупок в Magento

В Magento, если вам нужно получить / получить данные о Покупке в корзине, вы можете сделать это одним из двух возможных способов, которые предоставят вам все покупные элементы в массиве: –

  1. $cartItems1 = $cart->getQuote()->getAllItems();
  2. $cartItems2 = $cart->getItems()->getData();

Но прежде чем использовать какой-либо из двух вышеперечисленных методов, вам необходимо инициализировать объект корзины покупок как:

 $cart = new Mage_Checkout_Model_Cart(); $cart->init(); 

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

В любом случае такой вариант доступен в Magento, может ли кто-нибудь его выделить?

Если вы посмотрите на код классов Cart и Quote, все станет ясно.

Вот код для $ cart-> getItems ():

 public function getItems() { return $this->getQuote()->getAllVisibleItems(); } 

Обычный и простой – он просто вызывает метод объекта Quote. Итак, теперь вопрос: в чем разница между getAllVisibleItems () и getAllItems () ?

Давайте посмотрим на код обоих методов:

 public function getAllItems() { $items = array(); foreach ($this->getItemsCollection() as $item) { if (!$item->isDeleted()) { $items[] = $item; } } return $items; } public function getAllVisibleItems() { $items = array(); foreach ($this->getItemsCollection() as $item) { if (!$item->isDeleted() && !$item->getParentItemId()) { $items[] = $item; } } return $items; } 

Единственное отличие: getAllVisibleItems () имеет дополнительную проверку для каждого элемента:

 !$item->getParentItemId() 

который проверяет, имеет ли продукт родительский (другими словами, он проверяет, является ли он простым продуктом). Поэтому в возвращаемом массиве этого метода будут отсутствовать простые продукты, а не getAllItems () .

Существуют ли другие способы извлечения элементов?

Можно было бы непосредственно получить коллекцию продуктов из объекта цитаты:

 $productCollection = $cart->getQuote()->getItemsCollection();