作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要重新组织产品列表类别页面。
我的产品中有一个 date_field 属性需要遵循此排名:
$original_collection = clone $observer->getEvent()->getCollection();
$observer->getEvent()->getCollection()
->addAttributeToFilter('data_inicio', array('gteq' => date('Y-m-d')));
$collection2 = $original_collection
->addAttributeToFilter('data_inicio', array('lt' => date('Y-m-d')));
//and after I will merge both collections by adding each item from $collection2 into $observer
You cannot define a correlation name '_table_data_inicio_default' more than once
最佳答案
PHP 克隆的问题在于它不是深度克隆,因此某些资源是共享的,因此您会看到名称冲突。我发现最好的做法是在 SQL 中做尽可能多的工作,然后这些小问题很少出现。
$collection = $observer->getEvent()->getCollection();
// store old ordering
$orderBys = $collection->getSelect()->getPart(Zend_Db_Select::ORDER)
$collection->getSelect()->reset(Zend_Db_Select::ORDER);
// set first order part
$collection->addExpressionAttributeToSelect(
'future',
'IF({{data_inicio}}>="' . date('Y-m-d') . '",1,0)',
'data_inicio')
->addAttributeToSort('future', 'desc');
// reinstate old ordering afterwards
foreach ($orderBys as $orderBy) {
$collection->getSelect()
->order(is_array($orderBy) ? implode(' ', $orderBy) : $orderBy);
}
future
创建用于比较日期,然后首先与今天或更大的行排序。它不是按
data_inicio
排序的.它可能会覆盖任何默认排序,并且 - 我尚未对此进行测试 - 可能会在用户排序后应用。
关于Magento:如何在观察者内部合并两个集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12628450/
我是一名优秀的程序员,十分优秀!