假设情况。我想填充/加载sales/order收集与每一个地方的grand_total等于total_paid秩序。我知道我可以使用addFieldToFilter通过一个特定的值来过滤,但有可能使用这种方法,通过其他数据库中的值进行过滤。如果没有,是否有在Magento的系统中的任何数据的访问对象,允许此。

$orders = Mage::getModel('sales/order');
$orders = $orders->getCollection();
$orders->addFieldToFilter('total_paid',Array('eq'=>30));  //would find all the orders that were 30 
//syntax to find all the orders whose total_paid value is equal to it's grand_total attribute
//????????

non-eav SQL概念我抓为是:

SELECT * FROM Orders o WHERE o.total_paid = o.grand_total

这是可能与对象方法调用纯粹做,或是否需要做负载后过滤?

如何等ORM系统处理呢?

有帮助吗?

解决方案

我在等待一个明确的答案,但看到什么也没有拿出我不如分享我发现了。 我跟踪addFieldToFilter,显然每次使用值最终报价所以你不能真正通过使用列名“黑客”这个。 其实我看不出有什么办法做到这一点,至少不会在该类别中。

现实我认为你需要去与负载后过滤,至少现在是这样。当然,这是低效的代码很清晰,但话又说回来,如果计算效率是一个优先事项,你就不会首先使用的Magento ...

其他提示

就在我的项目之一来解决这个和整个这个问题就来了,同时寻找更好的分辨率。我的黑客是这样的:

$orders = Mage::getModel('sales/order')->getCollection();
$orders->getSelect()
       ->where('total_paid=grand_total');

有惹恼我的数据库,例如一个基本功能是通过Magento的ORM忽视。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top