Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Magento集合-按多个字段筛选_Php_Zend Framework_Magento_Php 5.3 - Fatal编程技术网

Php Magento集合-按多个字段筛选

Php Magento集合-按多个字段筛选,php,zend-framework,magento,php-5.3,Php,Zend Framework,Magento,Php 5.3,使用Magentos集合模型,我应该如何添加查询部件/过滤器,例如: WHERE (main_table.x < 1 OR (main_table.x - main_table.y) >= 5) 当您使用getSelect方法时,您通过传递Magento的模型集合界面来完成。有时,这是获得所需的精确select查询的唯一方法,但请记住,它可能不会与Magento模型界面的操作完全一致 使用bindParamater方法时,您使用的是Magento模型界面。我无法告诉为什么它不工作,

使用Magentos集合模型,我应该如何添加查询部件/过滤器,例如:

WHERE (main_table.x < 1 OR (main_table.x - main_table.y) >= 5)

当您使用
getSelect
方法时,您通过传递Magento的模型集合界面来完成。有时,这是获得所需的精确select查询的唯一方法,但请记住,它可能不会与Magento模型界面的操作完全一致

使用
bindParamater
方法时,您使用的是Magento模型界面。我无法告诉为什么它不工作,但我怀疑Zend select对象和Magento模型集合对象在不同的时间以不同的方式绑定其参数

要获得所需的结果,请跳过
bindParamater
方法,并使用更简单的
参数替换
或where
方法

$this->getSelect()
    ->where('main_table.x < 1')
    ->orWhere('(main_table.x - main_table.y) >= ?',$qty);
$this->getSelect()
->其中('main_table.x<1')
->或其中('(main_table.x-main_table.y)>=?',$qty);
Blockquote问题是我似乎无法将$qty绑定到:qty

实际上这不是问题,而是PDO/MySQL引擎处理查询语句准备和绑定参数(分别提交)以及随后的查询执行的方式

因此,如果您使用绑定参数,则不需要在DB抽象层上生成最终的查询语句


看到这一点,.

你是说它确实有效,我只是在执行查询之前打印查询,从而得到误导性的结果?是的,你不会看到带有插值绑定的查询字符串,这当然会让人恼火。要进行双重检查,请使用绑定参数按sku或产品ID减少集合查询。
SELECT ... WHERE ... AND ... AND (main_table.x < 1) OR ((main_table.x - main_table.y) >= :qty) ORDER BY ...
$this->getSelect()->where('(main_table.x < 1 OR (main_table.x - main_table.y) >= ?)', $qty);
$this->getSelect()
    ->where('main_table.x < 1')
    ->orWhere('(main_table.x - main_table.y) >= ?',$qty);