1

いくつかの変更を加えるために、Magento ディレクトリの外部にロードする必要がある SKU でいっぱいの CSV があります。

これまでのところ、私はこれを持っています:

require_once('bla/bla/../../app/Mage.php');
umask(0);
Mage::app();

$product1 = Mage::getModel('catalog/product')->load(15186);
$productid = Mage::getModel('catalog/product')->getIdBySku('thatsku');
$product2->load($productid);
var_dump($product1);
var_dump($product2);

この場合、$product1 は期待どおりに製品を返しますが、$product2 は を返しますbool(false)。これを試しても同じことが起こります:

$product = Mage::getModel('catalog/product')->loadByAttribute('sku', $sku);
var_dump ($_product);

$product も次のように返しbool(false)ます。

何が起こっているかについて何か考えはありますか?

編集:申し訳ありませんが私はばかです。テストのために追加したと断言できたとしても、データベースには SKU がありませんでした。このコードは機能します。

4

3 に答える 3

1

これを試して 、

print_r($product);

var_dump がプロパティ ゲッターをトリガーしないように見える場合があるため、null として表示される

于 2013-11-12T10:42:15.473 に答える
1

ここで私はあなたに1つの代替ソリューションを与えることができます。

SKUから製品IDを取得する関数を作成してください。

function getProductId($sku)
{

    $write = Mage::getSingleton('core/resource')->getConnection('core_write');
    static $product_ids;
    if (is_object($sku)) {
        $sku = $sku->asArray();
    }
    if (empty($product_ids)) {
        $skus = $write->query('select sku, entity_id from `catalog_product_entity` where type_id="simple"');
        foreach ($skus->fetchAll() as $data) {
            $product_ids[$data['sku']] = $data['entity_id'];
        }
        unset($skus);
        unset($data);
    }
    return isset($product_ids[$sku]) ? $product_ids[$sku] : '';
}

製品IDが返され、以下のコードで簡単に見つけることができます

$id = getProductId('YOUR SKU GOES HERE');

$product = Mage::getModel('catalog/product')->load($id);

これがきっとあなたに役立つことを願っています。

于 2013-11-12T10:47:53.530 に答える
0

すみません、ばかです。テストのために追加したと断言できたとしても、データベースには SKU がありませんでした。このコードは機能します。

于 2013-11-12T10:55:10.523 に答える