php - 使用 Magento 的 addFieldToFilter 按现有列进行过滤

标签 php orm magento entity-attribute-value

假设情况。我想为每个订单填充/加载一个 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 ,显然您使用的每个值最终都会被引用,因此您无法通过使用列名来真正“破解”它。 事实上,我看不出有什么办法可以做到这一点,至少在这个类(class)里是这样。

实际上,我认为您需要使用加载后过滤,至少现在是这样。这当然是低效代码的定义,但话又说回来,如果计算效率是优先考虑的,那么您一开始就不会使用 Magento...

关于php - 使用 Magento 的 addFieldToFilter 按现有列进行过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/652435/

相关文章:

php - 在 Magento 之外但在同一域中获取购物车内容

shell - 在 Magento shell 脚本中使用 getUrl

php - Magento 1.7 无法编辑某些产品

php - 如何将内存中的用户提供者注入(inject)到服务中?

php - 在 Ajax 调用 PHP 文件中使用对象

php - 为批量照片上传创建自定义文件对话框

python - Django 关系

php - facebook/digg 如何获取网页的所有图像?

java - 通过数据库实现扩展基类的 ORM 框架

java - hibernate + Spring 应用程序。在使用数据库之前添加逻辑