Selama proses checkout bahkan jika pelanggan memilih alamat yang sudah ada, drop-down customer_address
entitas sedang disimpan kembali. Tahu untuk apa?
Memperbarui:
Dimulai di Mage_Checkout_Model_Type_Onepage::saveOrder
tempat kode berikut dijalankan:
$service = Mage::getModel('sales/service_quote', $this->getQuote());
$service->submitAll();
submitAll
Panggilan ini Mage_Sales_Model_Service_Quote::submitOrder
yang mengeksekusi berikut:
$transaction->save();
Metode ini melewati semua objek kutipan (?) Dan menyimpannya.
Memperbarui:
Hal yang paling menjijikkan adalah mereka melakukannya untuk semua alamat yang dimiliki pelanggan. Jadi, jika pengunjung Anda mendapatkan 10 alamat yang disimpan di buku alamat, semuanya akan disimpan kembali selama checkout. Jangan heran mengapa ini adalah bagian Magento yang paling banyak menghabiskan sumber daya.
customer_address_entity
atau di kutipan?customer_address
entitas sedang disimpan selama menempatkan pesanan. Tidak ada koneksi untuk mengutip.Jawaban:
Biasanya, kecuali data telah berubah pada suatu model, memanggil save () tidak akan menyebabkan model disimpan kembali .
Ini pasti asumsi selama menerapkan logika dengan cara ini.
Namun, karena metode model alamat penawaran
_beforeSave()
menetapkan ID penawaran, ID pelanggan, dan mungkin juga ID alamat pelanggan dansame_as_billing
properti melalui_populateBeforeSaveData()
metode ini, perlindungan terhadap penghematan yang tidak perlu dihindari.Perbaikan mudah dalam metode
populateBeforeSaveData()
ini adalah untuk memeriksa apakah nilai yang akan ditetapkan pada model alamat sudah ada pada model saat ini dengan nilai yang sama.Untungnya, alamat kutipan disimpan dalam tabel datar, yang berarti penghematannya cukup efisien. Dan kecuali untuk beberapa toko B2B saya belum mengalami pelanggan memiliki lebih dari beberapa alamat.
sumber
Saya akan menebak bahwa ini tidak dipikirkan.
Mungkin dianggap bahwa daripada memperbarui alamat baru ditambah perubahan dalam penagihan default dan alamat pengiriman akan lebih mudah hanya untuk menyimpan semuanya, karena orang tidak akan memiliki banyak alamat dan checkout sudah lambat orang tidak akan memperhatikan .... banyak .
Catatan: ini hanya sebuah ide tapi saya pikir ini layak untuk dibagikan, saya juga bisa membayangkan diri saya membuat asumsi yang sama :(
sumber
simpan alamat selama checkout dilakukan oleh _afterSave () - Metode dalam model sumber daya pelanggan.
seingat saya model pelanggan akan disimpan selama penempatan pesanan.
Bersulang
sumber