Каковы эквиваленты моделей magento 1.x в magento 2.x


Я новичок в magento2, и мне очень сложно правильно использовать обычные фрагменты кода в новой версии. Итак, пожалуйста, помогите мне здесь и объясните эквиваленты следующих фрагментов в magento2:

Mage::getModel('catalog/product')->getCollection();
Mage::getModel('sales/order');
Mage::getModel('catalog/category')->getCollection();
Mage::getModel('customer/customer');
Mage::getModel('cart/quote');
Mage::getModel('checkout/cart');
Mage::getSingleton('customer/session');
Mage::getModel('catalog/category')->load(id);

Я надеюсь, что этот вопрос поможет всем новым разработчикам magento 2 найти относительные запросы в одном месте.

Author: Abhishek Dhanraj Shahdeo, 2016-09-22

1 answers

В magento 2 больше нет статического метода для создания экземпляров моделей.
Вы должны использовать инъекцию зависимостей.
Для моделей, которые не поддаются инъекции, вы можете использовать фабрику, которая будет создавать экземпляры моделей.
неинъекционные продукты - это, например, модель продукта, модель заказа... в общем, то, что вы можете назвать нагрузкой. Это включает в себя коллекции.
Инъекционные вещества вы можете просто ввести в свой конструктор.
Например, сеанс клиента можно вводить инъекционно.

Допустим, вам нужно использовать модели, описанные выше, в одном из ваших классов.
Я добавлю их все в один класс, но вы можете использовать только то, что вам нужно.

class MyClass extends SomeOtherClass
{
    protected $productCollectionFactory;
    protected $orderFactory;
    protected $categoryCollectionFactory;
    protected $customerFactory;
    protected $cart;
    protected $customerSession;
    protected $categorFactory;
    public function __construct(
       ... //you can have some other parameters here
       \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory $productCollectionFactory,
        \Magento\Sales\Model\OrderFactory $orderFactory,
        \Magento\Catalog\Model\ResourceModel\Category\CollectionFactory $categoryCollectionFactory,
        \Magento\Customer\Model\CustomerFactory $customerFactory,
        \Magento\Checkout\Model\Cart $cart,
        \Magento\Customer\Model\Session $customerSession,
        \Magento\Catalog\Model\CategoryFactory $categoryFactory,
       ... //you can have other parameters here
    ) {
        ....
        $this->productCollectionFactory = $productCollectionFactory;
        $this->orderFactory = $orderFactory;
        $this->categoryCollectionFactory = $categoryCollectionFactory;
        $this->customerFactory = $customerFactory;
        $this->cart = $cart;
        $this->customerSession = $customerSession;
        $this->categoryFactory = $categorFactory;
        ....
    }
}

Тогда вы можете использовать их в своем классе вот так.

Чтобы получить коллекцию продуктов, вы можете сделать следующее:

$productCollection = $this->productCollectionFactory->create();

Чтобы получить представление о модели порядка, сделайте следующее:

$order = $this->orderFactory->create();

Коллекция категорий

$categoryCollection = $this->categoryCollectionFactory->create();

Экземпляр клиента

$customer = $this->customerFactory->create();

Корзина/цитата не существует в magento 2.

Для оформления заказа вы можете просто использовать $this->cart, так как это можно вводить инъекционно.
то же самое для сеанса клиента. Это синглеты.

Получить категорию

 $category = $this->categoryFactory->create()->load($id);
 2
Author: Marius, 2016-09-22 14:15:58