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

カスタムモジュールに2番目の方法を使用していますが、うまくいきました。この回答が役立つことを願っています:)

于 2009-04-27T02:54:23.893 に答える
0

を持たないオブジェクトはどうaddAttributeToFilterですか? ロール オブジェクトをその名前でロードしようと何時間も試みましたが、何も機能しません。唯一可能な方法は load です。

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

Mage_Admin_Model_Mysql4_Role::load、文字列値を使用してフィルタリングすることを不可能にするだけです。

MagentoにはRube Goldbergアーキテクチャがあります...

于 2009-08-07T21:53:25.237 に答える