4

誰かが私がこれをパズルで解くのを手伝ってくれることを願っています。コレクションを使用して、Magentoカタログモデルからいくつかのデータを読み込もうとしています。コードは次のようになります。

$model = Mage::getModel('catalog/product');
$collection = $model->getCollection();
$collection->addAttributeToSelect('short_description');
$collection->addFieldToFilter('SKU',array('like' => array('%EBOOK%')));
$collection->load();
var_dump($collection->getData());

これにより、フラットカタログ製品テーブルのすべてのフィールドを含むオブジェクトのダンプが生成されますが、$collection->addAttributeToSelect()メソッドで要求したフィールドは生成されません。このメソッドでどのフィールドを指定しても(「*」でも)、コレクションが標準のフィールドセット以外のものを返すようにすることはできません。また、動作するはずのフィールドの設定を解除することもできません$collection->removeFieldFromSelect(NULL)

私は愚かな/間違った/両方をやっていますか?

前もって感謝します。

4

1 に答える 1

4

これはgetData()、コレクションを呼び出すが、このコレクションの製品を呼び出さないためです。

なぜこれが起こるのかを実際に分析したことはありませんが、

foreach ($collection as $product) {
    var_dump($product->getData());
}

それ以外の

$collection->load();
var_dump($collection->getData());

期待するデータが得られます。

于 2012-04-25T09:09:45.497 に答える