我正在使用以下代码从表中获取一些数据.
$collection = Mage::getModel('bannerslider/bannerslider')->getCollection()
->addFieldToFilter('status',1)
->addFieldToFilter('is_home',$this->_display)
->addOrder('position', 'ASC')
;
Run Code Online (Sandbox Code Playgroud)
仅仅为了我的好奇心,我想检查在这里执行的查询,并且我使用此代码回显
$collection->printLogQuery(true);
var_dump((string)$collection->getSelect());
Run Code Online (Sandbox Code Playgroud)
现在,我的问题是字符串
SELECT `main_table`.* FROM `bannerslider` AS `main_table` WHERE (status = '1') AND (is_home = '0')
Run Code Online (Sandbox Code Playgroud)
没有显示我的最后一个条件,addOrder但该集合实际上是按位置字段排序,我检查了.
我不明白的是为什么订单条件在查询中不可见.谢谢.
Vin*_*nai 13
您的订单未显示的原因是因为在load()方法期间将订单添加到查询中.
看到Varien_Data_Collection_Db::load()
public function load($printQuery = false, $logQuery = false)
{
// ... removed for brevity
$this->_renderFilters()
->_renderOrders()
->_renderLimit();
$this->printLogQuery($printQuery, $logQuery);
$data = $this->getData();
// ... removed for brevity
}
Run Code Online (Sandbox Code Playgroud)
如果你打电话,$collection->load(true)你会看到包含order by子句的SQL.
| 归档时间: |
|
| 查看次数: |
31079 次 |
| 最近记录: |