質問

尋ねて申し訳ありませんが、Googleを検索しましたが、答えが見つかりません。

線513上のapp/core/Mage/Sales/Model/Convert/Order.phpこの規則があります:

$this->_order = Mage::getModel('sales/order')->load($this->getOnepage()->getQuote()->getId(), 'quote_id');
.

しかし、ロード関数の2番目のパラメータはどこにありますか?私が知っているように、1つのパラメータはプライマリフィールドのIDを正しく取得しますか?この2番目のパラメータquote_idは主キーではありませんが、$this->getOnepage()->getQuote()->getId()を使用してレコードをロードしますか?

事前にありがとうございました。

役に立ちましたか?

解決

短い回答は、2番目のパラメータが製品をロードするフィールド名を予想することです。これにより、IDだけでは、何も提供されていなければ、デフォルトではデフォルトで読み込むことができます。詳細が必要な場合は、以下の詳細情報が必要です。

app/code/core/Mage/Sales/Model/Order.phpのモジュール「販売/順」を調べると、ロード機能が宣言されていないことがわかりますので、Mage_Sales_Model_Abstractへの継承のチェーンを上り、ロード機能もありません。 。 Mage_Core_Model_Abstractへのもう1つの継承レベルを表示するこの関数を表示します。

public function load($id, $field=null)
{
    $this->_beforeLoad($id, $field);
    $this->_getResource()->load($this, $id, $field);
    $this->_afterLoad();
    $this->setOrigData();
    $this->_hasDataChanges = false;
    return $this;
}
.

_GetResourceを含む行を見ると、この2番目のパラメータがロードするのを助けるためにリソースに渡されることがわかります。

App / Code / Core / Mage / Sales / Resource / Order.phpでリソースをロードする場合は、ロード機能が見つかりませんので、継承を数える必要があります。負荷機能を見つけるためにMage_Core_Model_Resource_Db_Abstractに:

public function load(Mage_Core_Model_Abstract $object, $value, $field = null)
{
    if (is_null($field)) {
        $field = $this->getIdFieldName();
    }

    $read = $this->_getReadAdapter();
    if ($read && !is_null($value)) {
        $select = $this->_getLoadSelect($field, $value, $object);
        $data = $read->fetchRow($select);

        if ($data) {
            $object->setData($data);
        }
    }

    $this->unserializeFields($object);
    $this->_afterLoad($object);

    return $this;
}
.

この関数では、フィールドが設定されていない場合は$ this-> getIdFieldName()を使用してデフォルトでIDフィールドにデフォルト設定できます。

$ this-> getLoadSelectフィールドを使用して、そのフィールドに基づいて希望するオブジェクトをロードします。

ライセンス: CC-BY-SA帰属
所属していません magento.stackexchange
scroll top