`

Magento获取Zend_Db_Select对象中的SQL语句

 
阅读更多

 

app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Config.php

/**
 * Retrieve Product Attributes Used in Catalog Product listing
 *
 * @return array
 */
public function getAttributesUsedInListing() {
    $select = $this->_getReadAdapter()->select()
        ->from(array('main_table' => $this->getTable('eav/attribute')))
        ->join(
            array('additional_table' => $this->getTable('catalog/eav_attribute')),
            'main_table.attribute_id = additional_table.attribute_id',
            array()
        )
        ->joinLeft(
             array('al' => $this->getTable('eav/attribute_label')),
            'al.attribute_id = main_table.attribute_id AND al.store_id = ' . (int) $this->getStoreId(),
            array('store_label' => new Zend_Db_Expr('IFNULL(al.value, main_table.frontend_label)'))
        )
        ->where('main_table.entity_type_id=?', $this->getEntityTypeId())
        ->where('additional_table.used_in_product_listing=?', 1);

    // $sql = $select->assemble();
    // echo $sql;

    return $this->_getReadAdapter()->fetchAll($select);
}

 

Magento 操作数据库是在 Zend DB(Zend Framework)的基础上简单的做了下封装了。Zend DB 有自己的一套规则,来组合生成最终的SQL查询语句,可以看到上面的代码中有 from() join() joinLeft() where() 等函数,乱七八糟的一大堆东西,需要对 Zend DB的规则非常熟悉,才能知道实际执行的SQL语句,有没有办法直接打印出SQL语句?找了下,还真有,就是assemble()函数。在上面代码中最后部分可以看到。

顺被把SQL也附上来:

 

SELECT main_table.*,
IFNULL(al.value, main_table.frontend_label) AS store_label
FROM eav_attribute AS main_table
INNER JOIN catalog_eav_attribute AS additional_table
ON main_table.attribute_id = additional_table.attribute_id
LEFT JOIN eav_attribute_label AS al
ON al.attribute_id = main_table.attribute_id AND al.store_id = 1
WHERE (main_table.entity_type_id=’4′)
AND (additional_table.used_in_product_listing=1)
 

 

 

FROM:http://www.sqlstudy.com/article/magento-zend-db-select-sql-output.html

分享到:
评论

相关推荐

    magento事件清单

    本文将深入解析Magento社区版中的事件机制及其参数,帮助开发者更好地理解并利用这些事件来增强和定制Magento的功能。 ### 1. Magento事件机制概述 在Magento中,事件机制基于观察者模式,每当系统触发一个事件时...

    magento快速复制网站_magento_magento快速复制站_

    mysqldump -u [username] -p[password] magento_db > backup.sql ``` 这里的`[username]`和`[password]`是数据库的用户名和密码,`magento_db`是Magento的数据库名。备份完成后,将`backup.sql`文件传输到新服务器...

    Zend Framework过滤器Zend_Filter用法详解

    在构造函数中,可以设置字符编码(默认使用 `mb_internal_encoding()` 获取系统当前的编码)。`setEncoding()` 方法确保了当处理多字节字符(如中文)时,`mbstring` 拓展已启用,并使用 `mb_strtolower()` 函数来...

    New Arrivals模块_magento_magento新品模块_bank15p_

    该标题"New Arrivals模块_magento_magento新品模块_bank15p_"暗示了这是一个专门针对Magento系统的新品展示模块,可能由名为"bank15p"的开发者或团队创建。"bank15p"可能是这个模块的独特标识或者是开发者的用户名,...

    dollstore_magento_1.2_weidea.net_BootstrapWordpress前端源码模板_.zip

    当我们谈论“dollstore_magento_1.2_weidea.net_BootstrapWordpress前端源码模板”时,我们可以看到一个巧妙的结合,即将WordPress的前端设计优势与Magento的电子商务功能相结合的创新实践。 Bootstrap,由Twitter...

    SpecialPromotionsProforMagento2-2.7.0-CE_magento_magento2_builte

    5. **Promotions Manager**: "promotions_manager_for_magento_2_user_guide.pdf"是用户指南,详细介绍了如何使用此模块创建和管理促销活动,包括设置促销条件、限制、有效期,以及跟踪促销效果。 6. **...

    magento导出数据sql

    首先,`magento导出数据sql`是指使用SQL语句来提取Magento数据库中的数据。这通常涉及到备份、分析或迁移数据到其他系统。在Magento中,数据主要存储在MySQL数据库中,因此我们可以通过以下几种方式来导出数据: 1....

    AdvancedPermissionsforMagento2-1.3.6-CE_magento_magento2_

    "AdvancedPermissionsforMagento2-1.3.6-CE_magento_magento2_" 这个标题指的是Amasty公司为Magento 2电子商务平台开发的一个高级权限管理模块的版本1.3.6。这个模块是针对Magento 2 Community Edition (CE) 版本的...

    magento产品名称及描述批量修改sql

    3. **执行SQL**:在安全的环境中执行这些SQL语句,确保不会影响到其他数据。 4. **备份数据**:在执行任何大规模数据库操作之前,始终建议先备份数据库,以防意外发生。 5. **验证更改**:批量修改后,通过Magento...

    magento2_batch_imagecompre_backups

    第一次上传文件,请多多关照。 自己写的magento2中batch压缩图片,以及把压缩文件的原图备份起来。

    iwd_m2_checkout_suite_pro_1.6.0_magento_magento2_payment_checkou

    Magento作为全球领先的开源电商平台,其扩展库中有一款名为“IWD Magento 2 Checkout Suite Pro”的插件,版本1.6.0,旨在提升购物车结账体验,提高转化率。本文将深入探讨该插件的功能、优势以及如何在Magento 2...

    magento新建数据表后进行增,删,改操作

    在Magento平台中,对数据库的操作是十分常见的需求之一。本文将基于提供的代码示例,详细解析如何在Magento环境中新建数据表之后进行增、删、改等操作,并在此基础上提供一些优化建议。 #### 一、代码分析与优化...

    magento删除订单sql

    在Magento系统中,有时可能需要清理或删除特定的订单数据,比如当测试环境中积累了大量无用的订单记录,或者在某些特殊情况下需要手动清除错误的订单等。本文将详细介绍如何通过编写SQL语句来实现这一操作,并确保...

    magento数据演示

    在本主题“Magento数据演示”中,我们将深入探讨如何利用提供的压缩包文件`magento_sample_data_for_1.9.0.0.sql`来设置一个预填充的数据环境,以便快速了解和测试Magento 1.9系统。 首先,`magento_sample_data_...

    phoenix-module-cashondelivery-1.0.2_lady4mf_magento_magento2_Pho

    标题 "phoenix-module-cashondelivery-1.0.2_lady4mf_magento_magento2_Pho" 提供的信息表明这是一个 Magento 2 模块,由 PhoenixModule 创建,版本号为 1.0.2,并且可能与 lady4mf 有关。这个模块专注于 "Cash on ...

    magento中文手册.pdf

    学习Magento除了阅读官方文档和本中文手册外,还可以参与Magento社区,如Magento StackExchange、Magento论坛等,获取最新的技术资讯、交流经验、寻求帮助。同时,许多开发者也会在GitHub上分享他们的Magento扩展和...

    magento SQL常用命令

    根据提供的文件信息,我们可以归纳出一系列与...以上SQL命令涵盖了Magento日常管理中的一些常见场景,包括数据库维护、数据更新以及问题解决等方面。对于Magento管理员而言,熟练掌握这些SQL命令是非常有帮助的。

    Zend Guard功能详解zend_guard.rar

    本篇文章将深入探讨Zend Guard的功能、工作原理以及它在实际项目中的应用。 ### 1. Zend Guard的核心功能 - **源代码加密**:Zend Guard通过加密技术将PHP源代码转化为不可读格式,防止未经授权的人员查看或修改...

    magento aw_blog 博客插件

    AW_Blog 是 Magento 生态系统中的一个第三方博客插件,旨在为 Magento 商店提供一个功能完善的博客模块,以增加内容营销的能力,提升用户交互性并提高搜索引擎优化(SEO)效果。 首先,我们来看一下“magento aw_...

Global site tag (gtag.js) - Google Analytics