过滤 Magento 集合而不是产品,使用 distinct

Posted

技术标签:

【中文标题】过滤 Magento 集合而不是产品,使用 distinct【英文标题】:Filter Magento collection but not products, using distinct 【发布时间】:2011-05-29 12:28:29 【问题描述】:

在我的 magento 商店中,我试图从数据库表中检索 youtube 视频列表,但有些视频是重复的。

我希望通过使用 distinct 视频“值”来过滤视频,但无法找到任何有关使用 distinct 与 addFieldToFilter() 的信息

// get video collection

$collection = Mage::getModel('video/video')->getCollection();
$collection->addFieldToFilter('provider', 'youtube');

// filter by video value

$collection->addFieldToFilter('value')->distinct(true);

通过删除$collection->addFieldToFilter('value')->distinct(true);,它可以工作,但会检索所有视频。

【问题讨论】:

【参考方案1】:

在添加连接时,请确保在第三个参数中传递空白数组。

$this->getSelect()->joinLeft(
    'sales_order_item',
    'sales_order_item.order_id = main_table.order_id',
    []
);

之后添加以下内容以应用 DISTINCT

$this->getSelect()->distinct(true);

【讨论】:

【参考方案2】:

你可以试试这个:

$collection->getSelect()->distinct(true);

但这会根据 id 检索不同的值。 如果要使用不同的视频值检索视频,则应按“值”分组。

$collection->getSelect()->group('value');

如果要调试执行的查询:

$collection->getSelect()->__toString();

希望对你有帮助

【讨论】:

法布里齐奥...你让我微笑。你让它看起来很简单,效果很好,甚至我都能理解你的解释。谢谢。

以上是关于过滤 Magento 集合而不是产品,使用 distinct的主要内容,如果未能解决你的问题,请参考以下文章

如何过滤日期的Magento集合或null

Magento模型集合addFieldToFilter常用过滤条件

Magento 以任意顺序获取产品集合

Magento - 更改属性排序

使用集合过滤器和操作方法的Magento

有没有办法在 Magento 2.3 graphql 端点中使用动态过滤器查询产品?