直接SQL查询在Magento

Magento和 Zend框架 ,它是 提供内置 的数据访问 它可以让您 获得与 上级 关于 建立 有关数据库 访问 逻辑而不 担心 完全 抽象。 然而,有时你 只是想 能够运行 的几个关键 SQL查询 直接 绕过 抽象。 这个帖子 详细介绍了 在Magento 这样 最直接的方法

 

$conn = Mage:: getSingleton ( 'core/resource' ) -> getConnection ( 'core_read' ) ;

 

这将返回 Varien_Db_Adapter_Pdo_Mysql 对象, Zend_Db_Adapter_Abstract的 子类 ,这将 允许您运行 方式直接 在Zend 适配器 例如:

// Prints a list of all website names



$results
=
$conn
->
fetchAll
(
"SELECT * FROM core_website;"
)
;


foreach
(
$results
as
$row
)
{


echo
$row
[
'name'
]
.
"/n
"

;


}


请注意
,在
参数
的getConnection
调用
core_read
使用 -
这指示
,以
哪些资源
使用 Magento的 从本质上讲, 要使用的数据库 进行 查询。 在大多数 情况下不 相关 ,可作为 core_read 离开,但 它成为 非常重要的 设置 是正确的 ,当
使用多个 数据库,这 一个部署 方案中 的Magento 性能 白皮书 概述。






情况下,您
需要一个
不同的连接
,只需更改
参数
的getConnection
匹配。
其中最
有用的是
core_write
,这应该是
用于当你
要执行
的查询
,将
修改数据库。
core_read

core_write
始终可用并
可以正常工作,
但如果
您运行的是
扩展的一部分
,作为
一个
疑问,
最好是
在config.xml
中定义
的连接
,扩建及




In config.xml :

<config> 




<global>




<resources>




<extension_setup>




<connection>




<use>


core_setup</use>




</connection>




</extension_setup>




<extension_read>




<connection>




<use>


core_read</use>




</connection>




</extension_read>




<extension_write>




<connection>




<use>


core_write</use>




</connection>




</extension_write>




</resources>




</global>




</config>






然后
连接到您的
读取或写入
数据库的使用


$conn
=
Mage::
getSingleton
(
'core/resource'
)
->
getConnection
(
'extension_read'
)
;


$conn
=
Mage::
getSingleton
(
'core/resource'
)
->
getConnection
(
'extension_write'
)
;


利用上述
方法是
更好的方法
来执行数据库
连接,

就是未来的
校对
你的代码
- 如果
有必要
第二个数据库

可以
用于
任何地方
的getConnection
逗留
的。

最低限度
,代码应该
正确地引用
读写
使用
core_read
适当
行动
连接,例如


core_write




你可能感兴趣的:(直接SQL查询在Magento)