过滤 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的主要内容,如果未能解决你的问题,请参考以下文章