无法确定 magento 过滤器查询中的字段名称
Posted
技术标签:
【中文标题】无法确定 magento 过滤器查询中的字段名称【英文标题】:Cannot determine the field name in a magento filter query 【发布时间】:2011-09-25 22:49:44 【问题描述】:我在 Magento 查询中使用 OR 过滤器时遇到问题。这是我用的:
$collection = Mage::getModel('sales/order')->getCollection()
->addAttributeToSelect('*')
->addAttributeToFilter(
array(
array('attribute'=>'status','eq'=>'pending'),
array('attribute'=>'created_at', 'from'=>$startDate, 'to'=>$finishDate)
)
);
我想要以下 WHERE 语句:WHERE 'status' = 'pending' OR (created_at < $startDate AND created_at > $finishDate)
但我收到以下错误消息
Fatal error: Uncaught exception 'Mage_Core_Exception' with message 'Cannot determine the field name.' in /home/content/r/o/n/ronakkaria/html/magento/app/Mage.php:563
Stack trace:
#0 /home/content/r/o/n/ronakkaria/html/magento/app/code/core/Mage/Sales/Model/Resource/Collection/Abstract.php(52): Mage::throwException('Cannot determin...')
#1 /home/content/r/o/n/ronakkaria/html/magento/app/code/core/Mage/Sales/Model/Resource/Collection/Abstract.php(80): Mage_Sales_Model_Resource_Collection_Abstract->_attributeToField(Array)
#2 /home/content/r/o/n/ronakkaria/html/new/admin/magentoInvoice/getInvocieList.php(43): Mage_Sales_Model_Resource_Collection_Abstract->addAttributeToFilter(Array)
#3 main thrown in /home/content/r/o/n/ronakkaria/html/magento/app/Mage.php on line 563
我目前使用的是 1.6-2rc 版本。
【问题讨论】:
【参考方案1】:Afaik 你不能为sales/order
模型使用addAttributeToFilter()
到OR
的两个属性。
改用addAttributeToSearchFilter()
:
$startDate = '2011-01-01';
$finishDate = '2011-01-31';
var_dump(
Mage::getModel('sales/order')->getCollection()
->addAttributeToSelect('*')
->addAttributeToSearchFilter(
array(
array(
'attribute' => 'status',
'eq' => 'pending'
),
array(
'attribute' => 'created_at',
'from' => $startDate,
'to' => $finishDate
)
)
)
->getSelectSql(true)
);
这将创建一个 WHERE 子句:
WHERE
(status = 'pending') OR
(created_at >= '2011-01-01' AND created_at <= '2011-01-31')
【讨论】:
顺便说一句,您在问题的第一个代码部分下面提到的条件没有意义(至少对我而言)。因为它的意思是“包括同时创建的订单,之前$startDate
和之后 $finishDate
”,这很可能永远不会发生(除了你'重新使用奇怪的值^^)。我想这只是一个错字,对吧?以上是关于无法确定 magento 过滤器查询中的字段名称的主要内容,如果未能解决你的问题,请参考以下文章
如何使用字段作为来自一个 graphql 查询的过滤器来获取位于单独查询中的流体图像?