Saya melakukan yang berikut untuk mendapatkan beberapa pesanan dari sistem untuk ekspor:
$orders = Mage::getModel('sales/order')->getCollection()
->addFieldToFilter('status', $statusToExport)
->addFieldToFilter('store_id', $this->processingStoreId)
->addFieldToFilter('updated_at', array('gteq' => date('Y-m-d H:i:s', $lastSyncTime)));
Saya perlu menambahkan sesuatu yang tidak diekspor jika pesanan entity_id
ada di tabel khusus yang saya miliki. Jika saya menggunakan SQL, saya akan melakukan:
left join myTable as mt on main_table.entity_id = mt.entity_id
where mt.entity_id is null
Tetapi saya tidak yakin bagaimana memodifikasi kueri koleksi untuk melakukan hal serupa.
Catatan: Saya sudah mencoba
$orders = $orders->getSelect()
->joinLeft(
array("t1" => $myTable),
"main_table.entity_id = t1.entity_id",
array("admin_field_id" => "t1.id")
)
->where("t1.id is null")
tapi ini mengubahnya jadi permintaan dan saya ingin koleksi penjualan / pesanan dikembalikan.
Saya merasa saya kehilangan sesuatu yang sederhana ...
EDIT
Oke, saya sudah mencoba ini:
$orders->getSelect()
->joinLeft(
array("t1" => $myTable),
"main_table.entity_id = t1.entity_id",
array("admin_field_id" => "t1.id")
)
->where("t1.id is null");
Ketika saya menggema (string)$orders->getSelect()
itu mengembalikan permintaan saya harapkan dan tidak mengembalikan hasil ketika saya menjalankannya. $orders
Namun, masih mengandung item. Saya pikir gabung ini dimaksudkan untuk memodifikasi koleksi pada saat ini?
sumber
$orders->getSelect() ->joinLeft(array("t1" => $myTable), "main_table.entity_id = t1.entity_id", array("admin_field_id" => "t1.id")) ->where("t1.id is null")
mengecualikan item dari daftar saya saat ini?Saya menemukan alasan untuk ini.
Saya ingin hitungan nilai sebelum saya menerapkan gabung kiri jadi saya menambahkan
Namun ini menyebabkan koleksi memuat yang pada gilirannya berarti mengabaikan bergabung kiri yang saya lakukan selanjutnya. Saat debugging, melihat var
_isCollectionLoaded
adalah tip yang bagus dari Fabian.Saya sekarang melakukan ini sebagai gantinya untuk mendapatkan hitungan koleksi:
Ini memungkinkan saya untuk menghitung hasil tanpa memuat
$orders
koleksi.Catatan: Tolong terapkan upvotes apa pun untuk posting Fabians di atas saat dia membimbing saya dalam hal ini tetapi saya merasa solusinya menjamin itu jawaban sendiri.
sumber