使用Magento的addFieldToFilter现有列过滤
-
19-08-2019 - |
题
假设情况。我想填充/加载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忽视。
不隶属于 StackOverflow