5

我正在尝试构建一个简单的 Magento 模块,该模块需要在每个页面请求开始时连接到数据库。所有表都需要对其进行访问。我一直在拔头发,试图了解如何做到这一点。我能想到的最好的办法是我需要在config.xml我的模块文件中设置它,但究竟该命令是什么/如何使用它,我无法弄清楚。

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

4

2 回答 2

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());
}

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

于 2009-04-27T02:54:23.893 回答
0

没有的对象addAttributeToFilter呢?我已经尝试了几个小时按名称加载角色对象,但没有任何效果。唯一可能的方法是加载,如果不是莫名其妙的,它会完美地工作

if (!intval($value) && is_string($value)) {
   $field = 'role_id';
}

in Mage_Admin_Model_Mysql4_Role::load,这只会导致无法使用字符串值进行过滤。

Magento 的Rube Goldberg架构...

于 2009-08-07T21:53:25.237 回答