📜  magento 2 获取集合 - PHP (1)

📅  最后修改于: 2023-12-03 14:44:06.796000             🧑  作者: Mango

Magento 2 获取集合 - PHP

Magento 2 是一款流行的开源电商系统,提供丰富的 API 来操作数据库。本文将介绍如何使用 PHP 获取集合(collection)。

什么是集合?

在 Magento 中,集合是指一组相关对象的集合。据此可开发一些常见的功能,如从数据库中检索数据、筛选和排序数据、以及执行各种操作。

如何获取集合?

在 Magento 2 中,可以使用 \Magento\Framework\Model\ResourceModel\Db\Collection\AbstractCollection 类来获取集合。

首先,需要引入要使用的类:

use Magento\Framework\App\ObjectManager;
use Magento\Framework\View\Element\Template;

$objectManager = ObjectManager::getInstance();
$collection = $objectManager->create('Magento\Catalog\Model\ResourceModel\Product\Collection');

接下来,可以对集合进行筛选和排序操作:

$collection->addFieldToFilter('status', \Magento\Catalog\Model\Product\Attribute\Source\Status::STATUS_ENABLED);
$collection->addAttributeToSelect(['name', 'price', 'image']);
$collection->setPageSize(10);
$collection->setCurPage(1);
$collection->setOrder('entity_id', 'DESC');

其中,addFieldToFilter() 方法可以添加筛选器,指定要检索的字段名称和条件。在这种情况下,我们添加了一个条件,仅返回已启用的产品。addAttributeToSelect() 方法可以选择要返回的属性列表。setPageSize()setCurPage() 方法可用于分页操作。setOrder() 方法则指定排序方法。

最后,我们可以使用 load() 方法加载集合:

$collection->load();

现在,$collection 变量包含加载的所有产品。截取前 10 个结果:

foreach ($collection as $product) {
    echo $product->getName() . " (" . $product->getPrice() . ")" . PHP_EOL;
}

输出结果将为:

My Product 8 ($15.00)
My Product 7 ($15.00)
My Product 6 ($15.00)
My Product 5 ($15.00)
My Product 4 ($15.00)
My Product 3 ($15.00)
My Product 2 ($15.00)
My Product 1 ($15.00)
总结

以上介绍了如何在 Magento 2 中使用 PHP 获取集合。可以使用 addFieldToFilter() 方法来添加筛选器,使用 addAttributeToSelect() 方法选择要返回的属性,使用 setPageSize()setCurPage() 方法进行分页操作,使用 setOrder() 方法指定排序方法。最后,使用 load() 方法加载集合。