如何在Magento中连接数据库?

时间:2009-04-25 04:23:04

标签: php magento

我正在尝试构建一个简单的Magento模块,它需要在每个页面请求开始时连接到数据库。所有表都需要可访问。我一直在试着理解如何去做我的头发。我能想到的最好的是我需要在我的模块的config.xml文件中设置它,但确切地说该命令是什么/如何使用它,我无法弄清楚。

有人可以指导我或告诉我如何做到这一点?如果没有,那么包含手动连接到数据库的自定义config.php文件是不是太糟糕了?

2 个答案:

答案 0 :(得分:16)

您是否尝试使用资源模型或实体?以下是使用原始SQL查询表的方法,但您需要知道表名。

$w = Mage::getSingleton('core/resource')->getConnection('core_write');
$result = $w->query('select entity_id from catalog_product_entity');

if (!$result) {
    return false;
}

$row = $result->fetch(PDO::FETCH_ASSOC);
if (!$row) {
    return false;
}

尝试所有模型时,您可以使用

$products = Mage::getModel('catalog/product')->getCollection();

$products->addAttributeToFilter('entity_id', array('in' => array(1,2)));

$products->addAttributeToSelect('*');
$products->load();

foreach ($products as $_prod) {
   var_dump($_prod->getData());
}

我为我的自定义模块使用第二种方法,它对我来说很好,希望这个答案有所帮助:)

答案 1 :(得分:0)

没有addAttributeToFilter的对象呢?我已经花了好几个小时来按名称加载角色对象,没有任何作用。唯一可能的方法是加载,如果不是对于无法解释的

,这将非常有效
if (!intval($value) && is_string($value)) {
   $field = 'role_id';
}
Mage_Admin_Model_Mysql4_Role::load中的

,只能使用字符串值进行过滤。

Magento有一个Rube Goldberg架构......