Magento用SQL语句开发篇
有时为了调试magento,需要获取当前的查询sql语句,在magento中获取SQL语句,这里我们通过
$collection->getSelectSql(true)来调试sql
1 $collection=Mage::getResourceModel('reports/product_collection');
2 $query=$collection->getSelectSql(true);
3 echo $query;
magento获取SQL语句的另外一种方法是设置打印SQL为true
1 $collection=Mage::getResourceModel('reports/product_collection');
2 $collection->printlogquery(true);
得到的SQL语句 :
1 SELECT `e`.* FROM `catalog_product_entity` AS `e`
这里只是打印查询产品的SQL,如果要获取其他地方的SQL语句,道理也是一样的,我们根据上面的sql语句可以看到,其实magento的性能很 差,”select *”,magetno又是基于EAV(Entity Attribute Value)模型架构的,可以想象下这速度
Magento的Models 和Collection 很强大,使用它们可以很方便的查询和操作数据库。开发中,因为一些特殊需求或对Magento的了解不够深,可能会需要自己手写SQL语句来查询和操作数据库。以下分别是读写数据库的代码。
01 // For Read
02 // fetch read database connection that is used in Mage_Core module
03
04 $read= Mage::getSingleton('core/resource')->getConnection('core_read');
05
06 // first way
07 $query = $read->query("select name from core_website");
08 while ($row = $query->fetch())
09 {
10 $row = new Varien_Object($row);
11 echo "<strong>" . $row->getName() . "</strong><br/>";
12 }
13
14 // second way
15 $results = $read->fetchAll("SELECT * FROM core_website;");
16 foreach ($results as $row)
17 {
18 echo $row['name'] . "<br/>";
19 }
1 // For Write
2 // fetch write database connection that is used in Mage_Core module
3 $write = Mage::getSingleton('core/resource')->getConnection('core_write');
4
5 // now $write is an instance of Zend_Db_Adapter_Abstract
6 $write->query("insert into tablename values ('aaa','bbb','ccc')");
注意上面的getConnection()方法中的参数 “core_read”,表明了Magento将要使用的资源。与之相对应,当我们修改数据库的时候使用参数”core_write”.一般情况下 getConnection方法的参数应设成”core_read” 或 “core_write”(应该不指定也是可以的,但是如果Magento有多个数据库就必须指定了)。
作为新的entension module,在config.xml对”core_read” “core_write” 进行定义是个好的习惯。定义如下:
01 <config>
02 <global>
03 <resources>
04 <extension_setup>
05 <connection>
06 <use>core_setup</use>
07 </connection>
08 </extension_setup>
09 <extension_read>
10 <connection>
11 <use>core_read</use>
12 </connection>
13 </extension_read>
14 <extension_write>
15 <connection>
16 <use>core_write</use>
17 </connection>
18 </extension_write>
19 </resources>
20 </global>
21 </config>
对应上面新增的module的名字.使用下面相对应的语句在read或write Database:
1 $conn = Mage::getSingleton('core/resource')->getConnection('extension_read');
2 $conn = Mage::getSingleton('core/resource')->getConnection('extension_write');
一般情况是绝大多数的module都定义成”core_read” “core_write”方便且节省资源。当然特殊情况除外:
给每个module不同的读写权限
需要用多个Database
from: http://blog.sina.com.cn/s/blog_687015bd0100t2b2.html
Magento用SQL语句开发篇的更多相关文章
- oracle 中SQL 语句开发语法 SELECT INTO含义
oracle 中SQL 语句开发语法 SELECT INTO含义 在ORACLE中SELECT INTO是如何使用的,什么意思?和SQL SERVER的不一样? 和sqlserver的不一样sql ...
- 一些能体现个人水平的SQL语句[总结篇]
作为一名小小的开发人员,刚入门的时候觉得很难,过了一段时间之后,发现很简单,很快就可以搞定很bug了.然而这并不能说明你就已经很牛掰了,只能说,你不了解其他太多的东西.应该说,数据库有几个共同的命令, ...
- 2019.3.22 SQL语句(基础篇)
SQL语句 创建一个数据库: create database+数据库名; 使用数据库: use+数据库名; 查看mySQL中有哪些数据库: show databases; 删除数据库 drop dat ...
- Sql效能优化总结(续)- sql语句优化篇
今晚继续进行Sql效能问题的分享,今天主要是一些具体的sql优化方法和思路分享,若看过后你也有其他想法,欢迎一起探讨,好了,进入今天的主题. 针对性地对一些耗资源严重的具体应用进行优化 出现效能问题时 ...
- mysql数据库基础SQL语句总结篇
常用的sql增删改查语句 创建数据库:create database db_name character set utf8;删除数据库:drop database db_name;切换数据库:use ...
- sql语句开发使用---update
单表的更新大家都用过了,现在说下实际开发过程中,需要多表的查询更新状态,或者跨数据库的更新状态. 东西需要学习了才会懂得,所以站在巨人的肩膀看的更远. sql 语法; UPDATE 表名称 SET 列 ...
- 2019.3.25 SQL语句(进阶篇1)
运算符 基本的加减乘除取余都可以在SQL中使用 新建Employee1表并添加数据 create table Employee1 (eid int primary key auto_increment ...
- ORACLE基本SQL语句-查询篇
一.普通查询 /*查询表数据*/select * from STU /*取出前3行数据*/select * from stu where ROWNUM<=3 /*模糊查询*/select * f ...
- Magento中直接使用SQL语句
原理: magento是基于Zend Framework的,所以底层用的还是zend的zend db 在文件app/code/core/Mage/Catalog/model/Resource/Eav ...
随机推荐
- Maven介绍及安装
1.maven是一个管理第三方库的jar package 2.从该页面下载相应的Maven jar包(http://maven.apache.org/download.cgi),linux OS下 ...
- 【leetcode】915. Partition Array into Disjoint Intervals
题目如下: 解题思路:题目要求的是在数组中找到一个下标最小的index,使得index左边(包括自己)子序列的最大值小于或者等于右边序列的最小值.那么我们可以先把数组从最左边开始到数组最右边所有子序列 ...
- 【InnoDB】缓冲池
索引目录 INNODB的体系结构 缓冲池 缓存中页的定位: checkpoint技术 INNODB的关键特性 插入缓冲 change buffer 两次写 以下的资料总结自:官方文档和<MySQ ...
- 【LeetCode 41】缺失的第一个正数
题目链接 [题解] 先明确一点假设给的数字有n个. 那么最后的答案最情况下就是n+1 首先我们先判断一下所给的数组里面有没有1 如果没有直接返回1 否则. 把数组中所有的范围超过n或者小于1的数字全都 ...
- AcWing 241. 楼兰图腾 (树状数组)打卡
题目:https://www.acwing.com/problem/content/description/243/ 题意:给你n个点,问你 V 和 ^的图腾有多少个 思路:比如V 其实就是找当前点 ...
- form表单submit事件
form表单submit事件同时会触发form表单中button按钮的click事件 <!DOCTYPE html> <html> <head> <meta ...
- 用 Flask 来写个轻博客 (13) — M(V)C_WTForms 服务端表单检验
目录 目录 前文列表 WTForms WTF 的基础使用 常用的字段类型 fieldsDateField fieldsIntegerField fieldsFloatField fieldsStrin ...
- CSS3 resize 属性
CSS3 resize 属性 CSS 参考手册 实例 规定可以由用户调整 div 元素的大小: div { resize:both; overflow:auto; } 支持 Firefox 4+.Ch ...
- Single Page Application
single page web application,SPA,就是只有一张Web页面的应用,是加载单个HTML 页面并在用户与应用程序交互时动态更新该页面的Web应用程序. 单页Web应用(si ...
- 前端之间的url 传值
转自:https://www.cnblogs.com/candy-Yao/p/8858166.html