Vit*_*min 7 php zend-framework magento php-5.3
使用Magentos集合模型,我该如何添加查询部分/过滤器,例如:
WHERE (main_table.x < 1 OR (main_table.x - main_table.y) >= 5)
Run Code Online (Sandbox Code Playgroud)
更新 我现在运行这个:
$this->getSelect()
->where('main_table.x < 1')
->orWhere('(main_table.x - main_table.y) >= :qty');
$this->addBindParam(':qty', $qty);
Run Code Online (Sandbox Code Playgroud)
结果:
SELECT ... WHERE ... AND ... AND (main_table.x < 1) OR ((main_table.x - main_table.y) >= :qty) ORDER BY ...
Run Code Online (Sandbox Code Playgroud)
问题是,我似乎无法得到绑定$qty到:qty
更新2
我最终得到了这个,因为我需要OR在括号内
$this->getSelect()->where('(main_table.x < 1 OR (main_table.x - main_table.y) >= ?)', $qty);
Run Code Online (Sandbox Code Playgroud)
当您使用该getSelect方法时,您将绕过Magento的模型集合界面.有时这是获得所需精确选择查询的唯一方法,但请记住,它可能不会与Magento模型界面正在进行100%凝聚.
当您使用该bindParamater方法时,您正在使用Magento模型界面.我不能说为什么它不起作用,但我怀疑Zend选择对象和Magento模型集合对象在不同的时间以不同的方式绑定它们的参数.
要获得所需的结果,请跳过该bindParamater方法并使用该方法的简单?参数替换orWhere.
$this->getSelect()
->where('main_table.x < 1')
->orWhere('(main_table.x - main_table.y) >= ?',$qty);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8739 次 |
| 最近记录: |